客户端与服务器端的通讯,C++书写步骤。

如题所述

要实现客户端与服务器端的通讯,需要两部分C++的程序:服务器端程序代码和客户端代码。

首先是服务器端程序代码:

#include <WinSock2.h> 

#include <stdio.h> 

#include <stdlib.h>   

#pragma comment(lib, "ws2_32.lib") 

void main() 

WSADATA wsaData; 

int port = 5099; 

char buf[] = "Server: hello, I am a server.....";  

if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) 

printf("Failed to load Winsock"); 

return; 

}   

//创建用于监听的套接字 

SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0); 

SOCKADDR_IN addrSrv; 

addrSrv.sin_family = AF_INET; 

addrSrv.sin_port = htons(port); //1024以上的端口号 

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); 

int retVal = bind(sockSrv, (LPSOCKADDR)&addrSrv, sizeof(SOCKADDR_IN)); 

if(retVal == SOCKET_ERROR){ 

printf("Failed bind:%d\n", WSAGetLastError()); 

return; 

if(listen(sockSrv,10) ==SOCKET_ERROR){ 

printf("Listen failed:%d", WSAGetLastError()); 

return; 

SOCKADDR_IN addrClient; 

int len = sizeof(SOCKADDR); 

while(1) 

//等待客户请求到来   

SOCKET sockConn = accept(sockSrv, (SOCKADDR *) &addrClient, &len); 

if(sockConn == SOCKET_ERROR){ 

printf("Accept failed:%d", WSAGetLastError()); 

break; 

printf("Accept client IP:[%s]\n", inet_ntoa(addrClient.sin_addr)); 

//发送数据 

int iSend = send(sockConn, buf, sizeof(buf) , 0); 

if(iSend == SOCKET_ERROR){ 

printf("send failed"); 

break; 

char recvBuf[100]; 

memset(recvBuf, 0, sizeof(recvBuf)); 

//      //接收数据 

recv(sockConn, recvBuf, sizeof(recvBuf), 0); 

printf("%s\n", recvBuf); 

closesocket(sockConn); 

closesocket(sockSrv); 

WSACleanup(); 

system("pause"); 

}  

接下来是客户端代码:

#include <WinSock2.h> 

#include <stdio.h> 

#pragma comment(lib, "ws2_32.lib")  

void main() 

//加载套接字 

WSADATA wsaData; 

char buff[1024]; 

memset(buff, 0, sizeof(buff)); 

if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) 

printf("Failed to load Winsock"); 

return; 

SOCKADDR_IN addrSrv; 

addrSrv.sin_family = AF_INET; 

addrSrv.sin_port = htons(5099); 

addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 

//创建套接字 

SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0); 

if(SOCKET_ERROR == sockClient){ 

printf("Socket() error:%d", WSAGetLastError()); 

return; 

//向服务器发出连接请求 

if(connect(sockClient, (struct  sockaddr*)&addrSrv, sizeof(addrSrv)) == INVALID_SOCKET){ 

printf("Connect failed:%d", WSAGetLastError()); 

return; 

}else 

//接收数据 

recv(sockClient, buff, sizeof(buff), 0); 

printf("%s\n", buff); 

//发送数据 

char buff = "hello, this is a Client...."; 

send(sockClient, buff, sizeof(buff), 0); 

//关闭套接字 

closesocket(sockClient); 

WSACleanup(); 

}  


温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网