一个简单的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();
相关推荐
xingyuzhisuan2 小时前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
m0_535817552 小时前
从0到1上手Claude Code:Windows安装+88api配置全流程
windows·gpt·node.js·claude·claudecode·88api
wljy13 小时前
二、进制状态转换
linux·运维·服务器·c语言·c++
浮生若城4 小时前
Linux——Ext系列文件系统
linux·运维·服务器
ITyunwei09874 小时前
主流 SaaS 工单系统对比
运维·服务器·人工智能
阿昭L5 小时前
Windows用户态hook技术总结
windows·逆向·hook
无情的西瓜皮7 小时前
MCP协议实战:从零搭建一个AI Agent工具服务器
运维·服务器·python
fengchengwu20128 小时前
Jupyter 安装与使用指南:从环境配置到效率翻倍
ide·windows·jupyter
dualven_in_csdn8 小时前
mqtt消息及日志查看
linux·运维·服务器
呉師傅8 小时前
东芝e-STUDIO 3525ac提示黄色和品红色墨粉盒在耗尽前被更换。请重新插入之前的墨粉盒并用至耗尽如何操作
运维·windows·电脑