Linux搭建socket
时间: 2023-12-14 19:02:33 浏览: 78
在 Linux 上搭建 Socket 通信,需要以下步骤:
1. 创建 Socket:使用 `socket()` 函数创建一个 Socket,指定协议族、Socket 类型和协议类型。例如:
```
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
```
上述代码创建了一个 IPv4 的 TCP Socket。
2. 绑定 Socket:使用 `bind()` 函数将 Socket 绑定到指定的 IP 地址和端口上。例如:
```
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));
```
上述代码将 Socket 绑定到本机的任意 IP 地址和指定的端口上。
3. 监听连接请求:使用 `listen()` 函数将 Socket 转换为被动监听状态,等待客户端的连接请求。例如:
```
listen(sockfd, BACKLOG);
```
其中 BACKLOG 表示系统允许的连接请求的最大个数。
4. 接受连接请求:使用 `accept()` 函数从已经连接的 Socket 队列中取出一个连接请求,创建一个新的 Socket 与客户端进行通信。例如:
```
struct sockaddr_in client_addr;
socklen_t len = sizeof(client_addr);
int newfd = accept(sockfd, (struct sockaddr*)&client_addr, &len);
```
其中 `newfd` 是新创建的 Socket,用于与客户端进行通信。
5. 发送和接收数据:使用 `send()` 和 `recv()` 函数进行数据的发送和接收。例如:
```
char buffer[1024];
recv(newfd, buffer, sizeof(buffer), 0);
send(newfd, "Hello World!", 12, 0);
```
上述代码从客户端接收数据,并向客户端发送数据。
6. 关闭 Socket:使用 `close()` 函数关闭 Socket。例如:
```
close(sockfd);
close(newfd);
```
上述代码关闭服务器端的 Socket 和客户端的 Socket。
总体来说,搭建 Socket 通信需要熟悉 Socket API,并理解 TCP/IP 协议的基本原理。
阅读全文