TCP Client/Server模式的通信程序设计与实现

亲,请问能用C语言帮忙写一个“TCPClient/Server模式的通信程序设计与实现”,我才大二,也没学过类似的知识,课程设计却让编一个程序,请大神帮帮忙,应一下急,以... 亲,请问能用C语言帮忙写一个“TCP Client/Server模式的通信程序设计与实现”,我才大二,也没学过类似的知识,课程设计却让编一个程序,请大神帮帮忙,应一下急,以后定当重谢!
具体内容:1)TCP服务器在6666端口上监听(作为提高要求:可以考虑基于多线程的TCP服务器)。客户机向服务器发送任意一串字符,服务器收到后,向客户机发回该字符串中的字符个数。当客户机发送“再见”时,通信过程结束。
2)UDP Client/Server模式的通信程序设计与实现
具体内容:UDP服务器在6666端口上接收任一客户端的UDP数据报。当客户机向服务器发送任意的字符串,服务器收到后,向客户机发回该字符串中的字符个数。
3)基于Android平台,设计一个发送电子邮件、接收电子邮件程序,通过调试可以在Android操作系统的手机上运行。
三个任选一个,非常非常的感谢!(注,我只有这么多财富值了)
展开
 我来答
百度网友f297be6afd
2012-12-30 · 超过19用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:53.9万
展开全部

我选的第一题,TCP通信

服务器代码:

#include "stdafx.h"

#include<Winsock2.h>

#pragma comment(lib,"WS2_32.lib")

int main(int argc, char* argv[])

{

 WORD wVersionRequested;

 WSADATA wsaData;

 int err;

 

 wVersionRequested = MAKEWORD( 2, 2 );

 

 err = WSAStartup( wVersionRequested, &wsaData );

 if ( err != 0 ) 

 {

  return -1;

 }

 if ( LOBYTE( wsaData.wVersion ) != 2 ||

        HIBYTE( wsaData.wVersion ) != 2 ) {

  WSACleanup( );

  return -1; 

 }

 

 //这之上的是必须的

 

 SOCKET sockSer = socket(AF_INET,SOCK_STREAM,0); //TCP套接字

 SOCKADDR_IN AddrSer; 

 AddrSer.sin_family=AF_INET;

 AddrSer.sin_port=htons(6666);

 AddrSer.sin_addr.S_un.S_addr= inet_addr("127.0.0.1");//本机地址

 

 int ret = bind(sockSer,(SOCKADDR *)&AddrSer,sizeof(SOCKADDR_IN));

 if(ret!=0)

  return -1;

 

 listen(sockSer,5);

 

 SOCKADDR_IN AddrClient;

 int len=sizeof(SOCKADDR_IN);

 SOCKET sockLink=accept(sockSer,(SOCKADDR *)&AddrClient,&len);

 

 

 int i=0; char buf[50];

 while(1)

 {

  memset(buf,0,50);

  recv(sockLink,buf,50,0);

  printf("%s\n",buf);  //将得到的字符串输出(可不要)

  i=strlen(buf);   //得到字符串长度   

  memset(buf,0,50);

  sprintf(buf,"%d",i); //将int类型i写入char类型buf中

  send(sockLink,buf,strlen(buf)+1,0); //发送长度buf

 }

 

 closesocket(sockLink); closesocket(sockSer);

 

 return 0;

}

 

 

客户端代码:

#include "stdafx.h"

#include<Winsock2.h>

#pragma comment(lib,"ws2_32.lib")

int main(int argc, char* argv[])

{

 WORD wVersionRequested;

 WSADATA wsaData;

 int err;

 

 wVersionRequested = MAKEWORD( 2, 2 );

 

 err = WSAStartup( wVersionRequested, &wsaData );

 if ( err != 0 ) 

 {

  return -1;

 }

 if ( LOBYTE( wsaData.wVersion ) != 2 ||

        HIBYTE( wsaData.wVersion ) != 2 ) {

  WSACleanup( );

  return -1; 

 }

 

 SOCKET sockClient= socket(AF_INET,SOCK_STREAM,0);

 SOCKADDR_IN addr_ser;

 addr_ser.sin_family=AF_INET;

 addr_ser.sin_port=htons(6666);

 addr_ser.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

 

 int ret = connect(sockClient,(SOCKADDR*)&addr_ser,sizeof(addr_ser));

 if(ret!=0)

  return -1;

 char buf[50];

 int i=0;

 

 while(1)

 {

  memset(buf,0,50);

  gets(buf);   //输入字符串

  if(strcmp(buf,"再见")==0)

  {

   break;

  }

  else

  {

   send(sockClient,buf,strlen(buf)+1,0);

   memset(buf,0,50);

   recv(sockClient,buf,50,0);

   printf("%s\n",buf);

  }

 

 }

 

 closesocket(sockClient);

 return 0;}

 

客户端运行结果:

 

运行时要先运行服务器,在运行客户端。有为题追问吧~~

追问

亲,为什么客户端和服务器都出现这样的问题?请问怎么解决

追答
那是编译时会出现的问题,不用管的,直接链接  执行就可以了
岁烧
2013-01-03
知道答主
回答量:4
采纳率:0%
帮助的人:6228
展开全部
如果时间充足的话,建议去图书馆自己找本网络编程的书看一下,没你想象的那么难的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式