《socket 编程实现客户端和服务器端通信》由会员分享,可在线阅读,更多相关《socket 编程实现客户端和服务器端通信(2页珍藏版)》请在金锄头文库上搜索。
1、#include StdAfx.h#include #include #pragma comment(lib,WS2_32.lib)#define BUF_SIZE 64int _tmain(int argc,_TCHAR* argv)WSADATA wsd;SOCKET sServer;SOCKET SClient;int retVal;char bufBUF_SIZE;if (WSAStartup(MAKEWORD(2,2),&wsd)!=0)printf(wsastartup failed!n);return 1;sServer=socket(AF_INET,SOCK_STREAM,IP
2、PROTO_TCP);if (INVALID_SOCKET=sServer)printf(socket failed!n);WSACleanup();return -1;SOCKADDR_IN addrServ;addrServ.sin_family=AF_INET;addrServ.sin_port=htons(9990);addrServ.sin_addr.S_un.S_addr=htonl(INADDR_ANY);retVal=bind(sServer,(const struct sockaddr*) &addrServ,sizeof(SOCKADDR_IN);if (SOCKET_ER
3、ROR=retVal)printf(bind failed!n);closesocket(sServer);WSACleanup();return -1;retVal=listen(sServer,1);if (SOCKET_ERROR=retVal)printf(listen failed!n);closesocket(sServer);WSACleanup();return -1;printf(tcp server start.n);sockaddr_in addrClient;int addrClientlen=sizeof(addrClient);SClient=accept(sSer
4、ver,(sockaddr FAR*)&addrClient,&addrClientlen);if (INVALID_SOCKET=SClient)printf(accept failed!n);closesocket(sServer);WSACleanup();return -1;while(true)ZeroMemory(buf,BUF_SIZE);retVal=recv(SClient,buf,BUF_SIZE,0);if (SOCKET_ERROR=retVal)printf(recv failed!n);closesocket(sServer);closesocket(SClient
5、);WSACleanup();return -1;SYSTEMTIME st;GetLocalTime(&st);char sDataTime30;sprintf(sDataTime,%4d-%2d-%2d %2d:%2d:%2d,st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);printf(%s,recv from client %s:%d:%sn,sDataTime,inet_ntoa(addrClient.sin_addr),addrClient.sin_port,buf);if (StrCmp(buf,quit)=0
6、)retVal=send(SClient,quit,strlen(quit),0);break;elsechar msgBUF_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;closesocket(sServer);closesocket(SClient);
7、WSACleanup();system(pause);return 0;/#include StdAfx.h#include #include #pragma comment(lib,WS2_32.lib)#define BUF_SIZE 64int _tmain(int argc,_TCHAR* argv)WSADATA wsd;SOCKET sHost;SOCKADDR_IN servAddr;int retVal;char bufBUF_SIZE;if (WSAStartup(MAKEWORD(2,2),&wsd)!=0)printf(wsastartup failed!n);retur
8、n 1;sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (INVALID_SOCKET=sHost)printf(socket failed!n);WSACleanup();return -1;SOCKADDR_IN addrServ;servAddr.sin_family=AF_INET;servAddr.sin_addr.S_un.S_addr=inet_addr(59.69.132.186);/zhujiservAddr.sin_port=htons(9990);int sServerAddlen=sizeof(servAddr);ret
9、Val=bind(sHost,(LPSOCKADDR) &addrServ,sizeof(SOCKADDR_IN);if (SOCKET_ERROR=retVal)printf(bind failed!n);closesocket(sHost);WSACleanup();return -1;retVal=listen(sHost,1);if (SOCKET_ERROR=retVal)printf(listen failed!n);closesocket(sHost);WSACleanup();return -1;printf(tcp server start.n);sockaddr_in ad
10、drClient;int addrClientlen=sizeof(addrClient);SClient=accept(sHost,(sockaddr FAR*)&addrClient,&addrClientlen);if (INVALID_SOCKET=SClient)printf(accept failed!n);closesocket(sHost);WSACleanup();return -1;while(true)printf(please input a string to send:);std:string str;std:getline(std:cin,str);ZeroMem
11、ory(buf,BUF_SIZE);StrCpy(buf,str.c_str();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:%sn,buf);if (StrCmp(buf,quit)=0)retVal=send(SClient,quit,strlen(quit),0);break;closesocket(sHost);WSACleanup();system(pause);return 0;