TCPServer的实现
- #include <stdio.h>
- #include <WINSOCK2.H>
- #pragma comment (lib,"WS2_32.LIB")
- int main(int ,char **)
- {
- 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 sockServer = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
- SOCKADDR_IN addrSockServer ;
- addrSockServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
- addrSockServer.sin_family = AF_INET;
- addrSockServer.sin_port = htons(6000);
- if( 0 != bind(sockServer,(SOCKADDR*)&addrSockServer,sizeof(SOCKADDR_IN)))
- {
- printf("bind error");
- return 1;
- }
- if (0 != listen(sockServer,5))
- {
- }
- //定义客户端的socket地址
- SOCKADDR_IN addrClient;
- int len = sizeof (addrClient);
- SOCKET sockConn = accept(sockServer,(SOCKADDR*)&addrClient,&len);
- if (INVALID_SOCKET == sockConn)
- {
- printf("accept error !\n");
- }
- char buffer [256];
- while (true)
- {
- int recvLen =recv(sockConn,buffer,sizeof(buffer),0);
//通过返回值判断是否有错误,判断对端socket是否关闭- if (SOCKET_ERROR == recvLen || 0 == recvLen )
- {
- return 1;
- }
- printf("recvLen is :%d \n" ,recvLen);
- buffer[recvLen]='\0';
- printf(buffer);
- printf("\n");
- }
- return 0;
- }
TCPClient的实现
- #include <stdio.h>
- #include <string.h>
- #include <WINSOCK2.H>
- #pragma comment (lib,"WS2_32.LIB")
- int main(int ,char **)
- {
- 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,IPPROTO_IP);
- SOCKADDR_IN addrSockServer ;
- addrSockServer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
- addrSockServer.sin_family = AF_INET;
- addrSockServer.sin_port = htons(6000);
- // addrSockServer.sin_zero = {0};
- if (SOCKET_ERROR==connect(sockClient,(SOCKADDR*)&addrSockServer,sizeof (SOCKADDR)))
- {
- printf("error connect");
- return 1;
- }
- char buffer[256] ={0};
- while (true)
- {
- scanf("%s",buffer);
- if (strcmp(buffer,"exit") == 0)
- {
- break;
- }
- //通过返回值判断socket是否断开
- if (SOCKET_ERROR == send(sockClient,buffer,strlen(buffer),0))
- {
- printf("socket error !\n ");
- break;
- }
- }
- WSACleanup();
- return 0;
- }