在当今互联网时代,C语言socket编程 是构建底层网络通信程序的核心技术之一。无论你是初学者还是有一定经验的开发者,掌握 socket 编程都能为你打开通往 网络编程入门 的大门。本教程将手把手教你使用 C 语言编写一个简单的 TCP 客户端-服务器程序,让你轻松理解网络通信的基本原理。
Socket(套接字)是网络通信的端点,它允许不同主机上的进程通过网络进行数据交换。在 C 语言中,我们通过调用系统提供的 socket API(如 socket()、bind()、listen()、accept() 等)来实现网络通信功能。

在 Linux 或 macOS 系统中,C 语言的 socket 编程通常使用 POSIX 标准库。Windows 用户可使用 Winsock,但本教程以 Linux 为例(更通用)。你需要安装:
下面是一个简单的 TCP 服务器代码,它监听本地 8888 端口,并向连接的客户端发送 "Hello from server!" 消息。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); char *hello = "Hello from server!\n"; // 创建 socket if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // 配置地址结构 address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(8888); // 绑定 socket 到地址和端口 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); close(server_fd); exit(EXIT_FAILURE); } // 开始监听 if (listen(server_fd, 3) < 0) { perror("listen"); close(server_fd); exit(EXIT_FAILURE); } printf("Server listening on port 8888...\n"); // 接受客户端连接 if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); close(server_fd); exit(EXIT_FAILURE); } // 发送消息给客户端 send(new_socket, hello, strlen(hello), 0); printf("Message sent to client\n"); // 关闭连接 close(new_socket); close(server_fd); return 0;}客户端将连接到服务器的 8888 端口,并接收服务器发送的消息。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>int main() { int sock = 0; struct sockaddr_in serv_addr; char buffer[1024] = {0}; // 创建 socket if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("\n Socket creation error \n"); return -1; } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(8888); // 将 IP 地址转换为二进制形式 if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) { printf("\nInvalid address/ Address not supported \n"); return -1; } // 连接到服务器 if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { printf("\nConnection Failed \n"); return -1; } // 接收服务器消息 read(sock, buffer, 1024); printf("%s\n", buffer); close(sock); return 0;}打开两个终端窗口:
终端1(运行服务器):
gcc server.c -o server./server
终端2(运行客户端):
gcc client.c -o client./client
如果一切正常,客户端将输出:Hello from server!
lsof -i :8888 查看。<arpa/inet.h> 和 <sys/socket.h>(某些系统需显式包含)。通过本教程,你已经掌握了 C语言网络开发 的基础——使用 socket 实现 TCP 通信。这是构建聊天程序、Web 服务器、远程控制工具等应用的第一步。随着实践深入,你可以尝试添加多线程支持、处理多个客户端、使用 UDP 协议等高级功能。
记住,socket通信 是网络编程的基石,理解其工作原理对任何希望深入系统或网络开发的程序员都至关重要。动手实践是掌握它的最好方式!
祝你在 C 语言 socket 编程的旅程中一路顺风!
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025128428.html