头文件 :WinSock2.h
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
#include<WinSock2.h>
int main()
{
//初始化库
WSADATA wsadata;
if (WSAStartup(MAKEWORD(1, 1), &wsadata) != 0)
{
return -1;
}
//创建Socket
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET)
{
return -1;
}
//绑定地址,端口(7013),协议族信息
sockaddr_in seradr;
seradr.sin_family = AF_INET;
seradr.sin_port = htons(7013);
seradr.sin_addr.S_un.S_addr = INADDR_ANY;
if (bind(sock, (sockaddr*)&seradr, sizeof(seradr)) == INVALID_SOCKET)
{
return -1;
}
//监听,设置最大连接数
if (listen(sock, 2) == INVALID_SOCKET)
{
printf("listen error");
return -1;
}
//准备一个SOCKET,用于存放客户端Socket
SOCKET ClientSocket;
memset(&ClientSocket, 0, sizeof(ClientSocket));
//准备一个sockaddr_in,用于存放客户端信息
sockaddr_in remoteAddr;
memset(&remoteAddr, 0, sizeof(remoteAddr));
int nLen = sizeof(remoteAddr);
//accept收到客户端接入并保存信息
SOCKET clientsock = accept(sock, (sockaddr*)&remoteAddr, &nLen);
std::cout << clientsock << "已连接" << std::endl;
//recv接收来自客户端(clientsock)的数据保存在recvBuf里
char* recvBuf = new char[0xff] ;
memset(recvBuf, 0, sizeof(recvBuf));
int len = recv(clientsock, recvBuf,0xff, 0);
if(len>1)printf("%s", recvBuf);
//send发送数据(sendBuf)到客户端(clientsock)
const char* sendBuf = "hello TCP client";
send(ClientSocket, sendBuf, strlen(sendBuf), 0);
//关闭客户端Socket,服务端Socket,和清除库
closesocket(ClientSocket);
closesocket(sock);
WSACleanup();
}