一个简单的Windows TCP服务器实现

初始化

c 复制代码
WSADATA wsaData;
SOCKET serverSocket, clientSocket;
struct sockaddr_in serverAddr = { 0x00 };
struct sockaddr_in clientAddr = { 0x00 };
int clientAddrLen = sizeof(clientAddr);

if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
    printf("WSAStartup failed.\n");
}

创建socket

c 复制代码
if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
    printf("Socket failed.\n");
    WSACleanup();
}

IP及端口号配置

c 复制代码
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_port = htons(9988);

if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
    printf("Bind failed.\n")
    closesocket(serverSocket);
    WSACleanup();
}

监听客户端连接

c 复制代码
if (listen(serverSocket, 5) == SOCKET_ERROR) {
    printf("Listen failed.\n");
    closesocket(serverSocket);
    WSACleanup();
}

接受客户端连接

c 复制代码
if ((clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAddrLen)) == INVALID_SOCKET) {
    printf("Accept failed.\n");
    closesocket(serverSocket);
    WSACleanup();
}

接收

c 复制代码
int bytesReceived = recv(clientSocket, (char*)(_sRxBuffer + _sRxLenght), BUFFER_SIZE, 0);

发送

c 复制代码
int txPacketlenght = send(socket, (const char*)_sTxBuffer, txPacketlenght, 0);

回收socket资源

c 复制代码
closesocket(clientSocket);
closesocket(serverSocket);
WSACleanup();
相关推荐
风虎云龙科研服务器2 小时前
DeepSeek服务器繁忙之谜:原因与解决方案
运维·服务器·人工智能·科技·深度学习
xing.yu.CTF4 小时前
2022年中职网络建设与运维赛题-windows服务器解析
运维·服务器·网络·windows·网络建设与运维
渲染101专业云渲染7 小时前
川翔云电脑是什么?租电脑?
运维·服务器·电脑
007php0077 小时前
Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践
运维·服务器·开发语言·后端·docker·容器·云计算
菜鸟单飞7 小时前
一键查看电脑各硬件详细信息 轻松查看电脑硬件参数
windows·电脑
狄加山6758 小时前
网络编程(预备知识)
服务器·网络·php
致奋斗的我们8 小时前
项目:利用rsync备份全网服务器数据
linux·运维·服务器·开发语言·github·rsync·openeuler
抛砖者8 小时前
5 Flink的时间和窗口操作
服务器·flink·window操作·flink时间语义
云计算课代表9 小时前
喂饭式教程 - 腾讯云轻量服务器部署DeepSeek
服务器·ai·腾讯云