Linux通过tcp远程连接读取客户端发给服务端的数据c代码
时间: 2023-12-10 12:38:38 浏览: 32
以下是一个简单的示例代码,可以在Linux上建立TCP连接并读取客户端发送给服务器的数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
int sock;
struct sockaddr_in serv_addr;
char buf[BUF_SIZE];
int read_len;
if (argc != 3) {
printf("Usage: %s <IP> <port>\n", argv[0]);
exit(1);
}
sock = socket(PF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("socket");
exit(1);
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
serv_addr.sin_port = htons(atoi(argv[2]));
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
perror("connect");
exit(1);
}
while ((read_len = read(sock, buf, BUF_SIZE)) != 0) {
if (read_len == -1) {
perror("read");
exit(1);
}
printf("Received message: %s", buf);
}
close(sock);
return 0;
}
```
该代码使用socket API建立了一个TCP连接,并在循环中使用read函数从套接字中读取数据。当read函数返回0时,表示连接已关闭,循环结束。运行该代码时需要传入服务器的IP地址和端口号作为参数,例如:
```
$ ./client 127.0.0.1 1234
```
其中,127.0.0.1是本地回环地址,1234是服务器监听的端口号。