linux实现tcp双向通信
时间: 2023-08-12 15:14:46 浏览: 124
要在Linux中实现TCP双向通信,可以使用socket编程。以下是基本的步骤:
1. 创建一个socket,使用socket()函数,并指定协议族、类型和协议。例如,使用AF_INET表示IPv4,SOCK_STREAM表示TCP协议:
```
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
```
2. 绑定socket到一个地址和端口,使用bind()函数:
```
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(PORT_NUMBER);
bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
```
其中,PORT_NUMBER是你要使用的端口号。
3. 监听连接请求,使用listen()函数:
```
listen(sockfd, 5);
```
其中,第二个参数指定了等待连接的队列长度。
4. 接受连接请求,使用accept()函数:
```
struct sockaddr_in cli_addr;
socklen_t clilen = sizeof(cli_addr);
int newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
```
其中,newsockfd是新的socket描述符,可以用于与客户端通信。
5. 发送和接收数据,使用send()和recv()函数:
```
char buffer[256];
int n = recv(newsockfd, buffer, sizeof(buffer), 0);
send(newsockfd, "I got your message", 18, 0);
```
其中,recv()函数从newsockfd中读取数据,存入buffer中,并返回读取的字节数。send()函数将字符串“I got your message”发送到newsockfd中。
6. 关闭socket,使用close()函数:
```
close(sockfd);
```
以上是基本的步骤,可以根据需要进行修改。
阅读全文