C++ TCP客户端需跨平台封装Berkeley socket API:Windows调WSAStartup/WSACleanup,Linux忽略;创建socket后connect目标地址,再用send/recv通信,最后正确关闭资源。

用 C++ 写一个 TCP socket 客户端,核心是调用系统提供的 socket API(基于 Berkeley Sockets),虽然 C++ 标准库本身不直接提供网络编程接口,但可以干净地封装 C 风格的 socket 函数。下面是一个跨平台兼容性良好、结构清晰、可直接编译运行的入门示例(Windows/Linux 均适用,只需注意初始化差异)。
初始化 socket 环境(Windows 必须,Linux 可跳过)
Windows 下使用 socket 前必须调用 WSAStartup 初始化 Winsock 库;Linux 不需要这一步。
- Windows:在
main()开头调用WSAStartup(MAKEWORD(2,2), &wsaData) - 程序退出前调用
WSACleanup() - Linux 下忽略这两步,直接进入 socket 创建
创建 socket 并连接服务器
按顺序完成:创建 socket → 填充服务器地址(IP + 端口)→ 调用 connect() 建立 TCP 连接。
- 用
socket(AF_INET, SOCK_STREAM, 0)创建 IPv4 TCP socket - 用
struct sockaddr_in设置目标地址:sin_family = AF_INET,sin_port = htons(端口号),inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr) - 调用
connect(sockfd, (struct sockaddr*)&addr, sizeof(addr)),返回 0 表示成功 - 失败时检查
errno(Linux)或WSAGetLastError()(Windows)
收发数据与简单交互
连接成功后,用 send() 和 recv() 进行阻塞式通信(默认行为)。
标签: linux word windows 字节 端口 ai c++ win stream 网络编程 标准库
还木有评论哦,快来抢沙发吧~