其实客户端和服务器端的编写只有一点差别 1)不需要绑定端口,IP,和协议 2)不需要监听消息 3)客户端有连接服务器端的操作(connect) 在写客户端之前还要做一件事(当然也可以不做), 就是在一个工作空间里添加几个工程, 也就是在那个workspace里添加(add now project)工程。 下面的就是具体的代码 #include <Winsock2.h> #include <stdio.h> int main() { //----------------------------------------------- //用WSAStartup去协商协议版本号 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 0; } SOCKET SocketClient; SocketClient=socket(AF_INET,SOCK_STREAM,0); //--------------------------------------------------------------- //用connect去连接服务器 //连接的服务器的地址 //socketService指定了服务器的地址,端口和地址家族 sockaddr_in clientService; clientService.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1" ); clientService.sin_family=AF_INET; clientService.sin_port=htons(27015); //----------------------------------------------------------------- //用connect连接服务器 if ( connect(SocketClient, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) { printf( "Failed to connect.\n" ); WSACleanup(); return 0; } //----------------------------------------------------------------- //套接子连接成功后调用recv接收消息 char RecvBuffer[50]; recv(SocketClient,RecvBuffer,50,0); printf("%s",RecvBuffer); //----------------------------------------------------------------- //发送消息给服务器 send(SocketClient,"this is client message",sizeof("this is client message")+1,0); //----------------------------------------------------------------- //做最后的收尾工作 closesocket(SocketClient); WSACleanup( );
return 0; } 这样就可以和服务器进行通信了 当然在写客户端的时候,也要和写服务器端一样连接Ws2_32.lib文件 不然编译器连接不上 这是一个最简单的基于dos的通讯软件 下一步我将会利用多线程编写一个基于window图形窗口的通信软件 
|