以下内容有部分来之网络,如有侵权或者疑问可以联系我处理
这个版本可以是基于多线程实现的,服务端个客户端各创建两个线程,分别用来收数据和发数据。
server.cpp
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
#include <thread>
using namespace std;
class server
{
public:
WSADATA wsaData;
SOCKET sockServer;
SOCKADDR_IN addrServer;
SOCKET sockClient;
SOCKADDR_IN addrClient;
server();
void send();
void recv();
};
server::server()
{
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
cout << "WSAStartup failed!" << endl;
return;
}
//创建套接字
sockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sockServer)
{
cout << "socket failed!" << endl;
WSACleanup();//释放套接字资源;
return;
}
//服务器套接字地址
addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IP
addrServer.sin_family = AF_INET;
addrServer.sin_port = ht