在C语言中实现联机功能,通常需要使用 套接字(Socket)编程。以下是一个简单的C语言TCP客户端和服务器端示例,展示如何使用套接字进行联机通信。
TCP服务器端示例
```c
include include include include include include include define PORT 1500 define BUFFER_SIZE 1024 int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); char buffer[BUFFER_SIZE] = {0}; char *message = "Hello from server!"; // 创建套接字 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(PORT); if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 监听连接 if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); } // 接受连接 if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); } // 读取客户端发送的数据 read(new_socket, buffer, BUFFER_SIZE); printf("Message from client: %s ", buffer); // 向客户端发送消息 send(new_socket, message, strlen(message), 0); printf("Message sent to client "); // 关闭套接字 close(new_socket); close(server_fd); return 0; } ``` TCP客户端示例 ```c include include include include include include include define PORT 1500 define BUFFER_SIZE 1024 define SERVER_IP "127.0.0.1" int main() { int sock = 0; struct sockaddr_in serv_addr; char buffer[BUFFER_SIZE] = {0}; char *message = "Hello from client!"; // 创建套接字 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(EXIT_FAILURE); } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(PORT); // 将IP地址转换为二进制格式 if (inet_pton(AF_INET, SERVER_IP, &serv_addr.sin_addr) <= 0) { perror("inet_pton"); exit(EXIT_FAILURE); } // 连接到服务器 if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { perror("connect"); exit(EXIT_FAILURE); } // 向服务器发送消息 send(sock, message, strlen(message), 0); // 从服务器接收消息 read(sock, buffer, BUFFER_SIZE); printf("Message from server: %s ", buffer); // 关闭套接字 close(sock); return 0; } ``` 编译和运行 对于服务器端和客户端,使用以下命令分别编译编译