Linux tcp通过服务端给客户端发数据
时间: 2024-02-05 10:12:54 浏览: 94
在 Linux 中,TCP 通信基于套接字(socket)实现。要通过服务端给客户端发数据,需要以下步骤:
1. 创建服务端的套接字,指定 IP 地址和端口号,并将其绑定到套接字上。
2. 监听该套接字,等待客户端的连接请求。
3. 一旦有客户端连接请求,服务端接受连接请求,创建新的套接字与客户端进行通信。
4. 服务端通过新的套接字向客户端发送数据,可以使用 write() 函数。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8080
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
char *hello_msg = "Hello from server!";
// 创建服务端套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// 给套接字绑定 IP 地址和端口号
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 failed");
exit(EXIT_FAILURE);
}
// 接受客户端连接请求,创建新的套接字
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
perror("accept failed");
exit(EXIT_FAILURE);
}
// 向客户端发送数据
write(new_socket, hello_msg, strlen(hello_msg));
printf("Hello message sent\n");
return 0;
}
```
在上面的示例代码中,服务端首先创建套接字并绑定 IP 地址和端口号,然后监听该套接字。当有客户端连接时,服务端接受连接请求,创建新的套接字与客户端进行通信,最后向客户端发送数据。注意,这里使用了 write() 函数来发送数据。
阅读全文