#include <WINSOCK2.H> #include <stdio.h> #define PORT 5000 #define BUFFER 1024 void main(int argc,char *argv[]){ WSADATA wsaData; SOCKET client; int port=PORT; int iLen; char buf[BUFFER]; struct sockaddr_in serv; //服务器端的地址 memset(buf,0,sizeof(buf)); if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { printf("winsock load failed!/n"); return; } serv.sin_family=AF_INET; serv.sin_port=htons(port); serv.sin_addr.s_addr=inet_addr("3"); //10049:在其上下文中,其请求的地址无效。(如果IP地址改为w等非数字,数字则不同) //10060:没有正确答复活着连接的主机没有反应。(如果把ip地址改为12) //10061:由于目标机器积极拒绝,无法连接。(ip是对的,但是可能打开了防火墙) client=socket(AF_INET,SOCK_STREAM,0); if (client==INVALID_SOCKET) { printf("socket failed:%d",WSAGetLastError()); return; } if (connect(client,(struct sockaddr*)&serv,sizeof(serv))==INVALID_SOCKET) { printf("connect failed:%d/n",WSAGetLastError()); return; }else{ iLen=recv(client,buf,sizeof(buf),0); if (iLen==0) return; else if (iLen==SOCKET_ERROR) { printf("recv failed:%d/n",WSAGetLastError()); return; } printf("recv data from server:%s/n",buf); } closesocket(client); WSACleanup(); printf("press any key to continue..."); while(1); } server.cpp #include <WINSOCK2.H> #include <stdio.h> #include <stdlib.h> #define PORT 5000 void main(){ int port=PORT; WSADATA wsaData; SOCKET sListen,sAccept; int iLen; int iSend; char buf[]="Hellow,How are you!"; struct sockaddr_in serv,cliet; if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { printf("winsock load failed/n"); return; } sListen=socket(AF_INET,SOCK_STREAM,0); if (sListen==INVALID_SOCKET) { printf("socket failed:%d/n",WSAGetLastError()); return; } serv.sin_family=AF_INET; serv.sin_port=htons(port); serv.sin_addr.s_addr=htonl(INADDR_ANY); if (bind(sListen,(LPSOCKADDR)&serv,sizeof(serv))==SOCKET_ERROR) { printf("bind failed;%d",WSAGetLastError()); return; } if (listen(sListen,5)==SOCKET_ERROR) { printf("listen failed:%d",WSAGetLastError()); return; } iLen=sizeof(cliet); while (1) { sAccept=accept(sListen,(struct sockaddr*)&cliet,&iLen); if (sAccept==INVALID_SOCKET) { printf("accept failed:%d",WSAGetLastError()); break; } printf("accept client ip:[%s],port:[%d]",inet_ntoa(cliet.sin_addr),ntohs(cliet.sin_port)); iSend=send(sAccept,buf,sizeof(buf),0); if (iSend==SOCKET_ERROR) { printf("send failed:%d",WSAGetLastError()); break; } else if (iSend==0) break; else printf("send byte:%d/n",send); closesocket(sAccept); } closesocket(sListen); WSACleanup(); }