TCP通信编程代码可以根据不同的编程语言和并发模型来实现。以下是几种常见的实现方式:
多进程TCP通信
核心原理:父进程负责接受客户端连接,子进程处理具体的通信任务。
关键代码示例:
```c
include include include include include define PORT 8080 define BUFFER_SIZE 1024 int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); pid_t pid = fork(); if (pid == 0) { // 子进程 close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == 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); } while (1) { new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen); if (new_socket < 0) { perror("accept"); exit(EXIT_FAILURE); } char buffer[BUFFER_SIZE] = {0}; int valread = read(new_socket, buffer, BUFFER_SIZE); if (valread < 0) { perror("read"); exit(EXIT_FAILURE); } printf("Message from client: %s ", buffer); send(new_socket, buffer, strlen(buffer), 0); close(new_socket); } } else if (pid > 0) { // 父进程 close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); while (1) { sleep(1); } } else { perror("fork"); exit(EXIT_FAILURE); } return 0; } ``` 核心原理:使用线程处理客户端连接和任务。 关键代码示例:多线程TCP通信