socket编程实现客户端和服务器端通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}