tcp通信编程代码怎么写

时间:2025-03-02 21:34:26 明星趣事

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通信

核心原理:使用线程处理客户端连接和任务。

关键代码示例