socket编程实现客户端和服务器端通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include ""

#include <>

#include

#pragma comment(lib,"")

#define BUF_SIZE 64

int _tmain(int argc,_TCHAR* argv[])

{ WSADATA wsd;

S OCKET sServer;

S OCKET SClient;

i nt retVal;

c har buf[BUF_SIZE];

i f (WSAStartup(MAKEWORD(2,2),&wsd)!=0)

{printf("wsastartup failed!\n");

return 1;

}

s Server=socket(AF_INET,SOCK_STREAM,IPPROTO_TC P);

i f (INVALID_SOCKET==sServer)

{printf("socket failed!\n");

WSACleanup();

return -1;

}

S OCKADDR_IN addrServ;

=AF_INET;

=htons(9990);

retVal=bind(sServer,(const struct sockaddr*) &addrServ,sizeof(SOCKADDR_IN));

i f (SOCKET_ERROR==retVal)

{printf("bind failed!\n");

closesocket(sServer);

WSACleanup();

return -1; }

retVal=listen(sServer,1);

i f (SOCKET_ERROR==retVal)

{printf("listen failed!\n");

closesocket(sServer);

WSACleanup();

return -1; }

p rintf("tcp server start...\n");

s ockaddr_in addrClient;

i nt addrClientlen=sizeof(addrClient);

S Client=accept(sServer,(sockaddr

FAR*)&addrClient,&addrClientlen);

i f (INVALID_SOCKET==SClient)

{

printf("accept failed!\n");

closesocket(sServer);

WSACleanup();

return -1;

}

w hile(true)

{

ZeroMemory(buf,BUF_SIZE);

retVal=recv(SClient,buf,BUF_SIZE,0);

if (SOCKET_ERROR==retVal)

{

printf("recv failed!\n");

closesocket(sServer);

closesocket(SClient);

WSACleanup();

return -1;

}

SYSTEMTIME st;

GetLocalTime(&st);

char sDataTime[30];

sprintf(sDataTime,"%4d-%2d-%2d %2d:%2d:%2d",, ,,,,;

printf("%s,recv from client [%s:%d]:%s\n",sDataTime,inet_ntoa,,buf);

if (StrCmp(buf,"quit")==0)

{

retVal=send(SClient,"quit",strlen("quit"),0);

break;

} else

{

char msg[BUF_SIZE];

sprintf(msg,"message received -%s",buf);

retVal=send(SClient,msg,strlen(msg),0);

if (SOCKET_ERROR==retVal)

{

printf("send failed!\n");

closesocket(sServer);

closesocket(SClient);

WSACleanup();

return -1;

} } }

c losesocket(sServer);

c losesocket(SClient);

W SACleanup();

s ystem("pause");

r eturn 0;

}

/#include ""

#include <>

#include

#pragma comment(lib,"")

#define BUF_SIZE 64

int _tmain(int argc,_TCHAR* argv[])

{

W SADATA wsd;

S OCKET sHost;

S OCKADDR_IN servAddr;

i nt retVal;

c har buf[BUF_SIZE];

i f (WSAStartup(MAKEWORD(2,2),&wsd)!=0)

{

printf("wsastartup failed!\n");

return 1;

}

s Host=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP) ;

if (INVALID_SOCKET==sHost)

{

printf("socket failed!\n");

WSACleanup();

return -1;

}

S OCKADDR_IN addrServ;

=AF_INET;

"");.\n");

s ockaddr_in addrClient;

i nt addrClientlen=sizeof(addrClient);

S Client=accept(sHost,(sockaddr

FAR*)&addrClient,&addrClientlen);

i f (INVALID_SOCKET==SClient)

{

printf("accept failed!\n");

closesocket(sHost);

WSACleanup();

return -1;

}

w hile(true)

{

printf("please input a string to send:");

std::string str;

std::getline(std::cin,str);

ZeroMemory(buf,BUF_SIZE);

StrCpy(buf,());

retVal=send(sHost,buf,strlen(buf),0);

if (SOCKET_ERROR==retVal)

{

printf("send failed!\n");

closesocket(sHost);

WSACleanup();

return -1;

}

retVal=send(sHost,buf,sizeof(buf)+1,0);

printf("recv from server:%s\n",buf);

if (StrCmp(buf,"quit")==0)

{

retVal=send(SClient,"quit",strlen("quit"),0);

break;

}

}

c losesocket(sHost);

W SACleanup();

s ystem("pause");

r eturn 0;

}

相关文档
最新文档