服务器代码
SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);
int send_len = 0;
int recv_len = 0;
//定义服务端套接字,接受请求套接字
SOCKET s_server;
//服务端地址客户端地址
SOCKADDR_IN server_addr;
//初始化套接字库
WSADATA wsadata;
WSAStartup(0x22, &wsadata);
//填充服务端地址信息
//填充服务端信息
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(80);
std::string msgstr="";
//创建套接字
s_server = socket(AF_INET, SOCK_STREAM, 0);
int result = bind(s_server,(struct sockaddr *) &server_addr,sizeof(server_addr));
if (result == SOCKET_ERROR) /* 绑定失败 */
{
closesocket(s_server);
printf("[Web] Fail to bind, error = %d\n", WSAGetLastError());
return -1;
}
if (listen(s_server,SOMAXCONN)==-1) {
int err = GetLastError();
std::cout << "服务器启动失败!" << std::endl;
std::cout << err << std::endl;
}
else {
std::cout << "服务器启动成功!" << std::endl;
}
while(1){
SOCKADDR_IN from_addr; /* 客户端地址 */
socklen_t from_len = sizeof(from_addr);
std::string reponse_data="404";
SOCKET acpt_soc = accept(s_server,(struct sockaddr *) &from_addr,&from_len);
if (acpt_soc == INVALID_SOCKET) /* 接受失败 */
{ int err = GetLastError();
printf("接收失败1", WSAGetLastError());
std::cout << err << std::endl;
break;
}
char recv_buf [1025] = "";
recv_len = recv(acpt_soc,recv_buf,1025, 0);
if (recv_len < 0) {
std::cout << "接收失败2!" << std::endl;
}else{
std::cout << "接收成功!" << std::endl;
std::cout << recv_buf << std::endl;
}
send_len = send(acpt_soc,recv_buf,strlen(recv_buf), 0);
if (send_len < 0) {
std::cout << "发送失败!" << std::endl;
closesocket(acpt_soc);
}else{
std::cout << "发送成功!" << std::endl;
}
}
//关闭套接字
closesocket(s_server);
//释放DLL资源
WSACleanup();
客户端代码
SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);
//printf("客户端嵌套字已经打开!\n");
int send_len = 0;
int recv_len = 0;
//定义服务端套接字,接受请求套接字
SOCKET s_server;
//服务端地址客户端地址
SOCKADDR_IN server_addr;
//初始化套接字库
WSADATA wsadata;
WSAStartup(0x22, &wsadata);
//填充服务端地址信息
//填充服务端信息
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(12580);
string msgstr="";
//创建套接字
s_server = socket(AF_INET, SOCK_STREAM, 0);
int nTimeout = 120000;
//设置接收超时为1000ms
if (SOCKET_ERROR == setsockopt(s_server, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeout, sizeof(int)))
{
fprintf(stderr, "Set SO_RCVTIMEO error !\n");
}
if (connect(s_server, (SOCKADDR *)&server_addr, sizeof(SOCKADDR)) == SOCKET_ERROR) {
cout << "服务器连接失败!" << endl;
closesocket(s_server);
//释放DLL资源
WSACleanup();
return 0;
}
else {
cout << "服务器连接成功!" << endl;
}
//发送,接收数据
cout << "开始传输桌面信息:"<< endl;
while(1){
char send_buf [1025] = "111";
send_len = send(s_server,send_buf,strlen(send_buf), 0);
if (send_len < 0) {
cout << "发送失败!" << endl;
closesocket(s_server);
//释放DLL资源
WSACleanup();
return 0;
}else{
cout << "发送成功!" << endl;
}
char recv_buf [1025] = "";
recv_len = recv(s_server,recv_buf,1025, 0);
if (recv_len < 0) {
cout << "接收失败!" << endl;
closesocket(s_server);
//释放DLL资源
WSACleanup();
return 0;
}else{
cout <<recv_buf<< endl;
cout << "接收成功!" << endl;
}
}
//关闭套接字
closesocket(s_server);
//释放DLL资源
WSACleanup();
可以关注以下公众号交流: