TCP Client/Server模式的通信程序设计与实现
具体内容:1)TCP服务器在6666端口上监听(作为提高要求:可以考虑基于多线程的TCP服务器)。客户机向服务器发送任意一串字符,服务器收到后,向客户机发回该字符串中的字符个数。当客户机发送“再见”时,通信过程结束。
2)UDP Client/Server模式的通信程序设计与实现
具体内容:UDP服务器在6666端口上接收任一客户端的UDP数据报。当客户机向服务器发送任意的字符串,服务器收到后,向客户机发回该字符串中的字符个数。
3)基于Android平台,设计一个发送电子邮件、接收电子邮件程序,通过调试可以在Android操作系统的手机上运行。
三个任选一个,非常非常的感谢!(注,我只有这么多财富值了) 展开
我选的第一题,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;}
客户端运行结果:
运行时要先运行服务器,在运行客户端。有为题追问吧~~