孙鑫第十四章那个我咋编译不成功?
服务端:程序代码:
#include <winsock2.h> #include <stdio.h> void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested, &wsaData); if(err != 0) return; if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup( ); return; } SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrClient; int len = sizeof(SOCKADDR); while(1) { char sendBuf[500]; char recvBuf[500]; SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len); sprintf(sendBuf,"Welcome %s to XXX",inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0); recv(sockConn,recvBuf,100,0); printf("%s",recvBuf); closesocket(sockConn); } }
客户端:
程序代码:
#include <winsock2.h> #include <stdio.h> void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup( wVersionRequested, &wsaData ); if( err != 0) { return ; } if( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return ; } SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr("172.0.0.1"); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //和他的一样,调式是这里没链接上,没错,就是什麽也接收不到 char recvBuf[100]; recv(sockClient,recvBuf,100,0); printf("%s\n",recvBuf); send(sockClient,"This is the client",strlen("This is client")+1,0); closesocket(sockClient); WSACleanup(); }