用C语言生成一个tcp服务端代码
时间: 2024-05-02 16:23:36 浏览: 78
好的,我可以帮您生成一个基于C语言的TCP服务器端代码。以下是一份示例代码,您可以根据自己的需求进行修改:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
int serv_socket, clnt_socket;
struct sockaddr_in serv_addr, clnt_addr;
socklen_t clnt_addr_size;
char buffer[BUF_SIZE];
// 创建socket
serv_socket = socket(PF_INET, SOCK_STREAM, 0);
if (serv_socket == -1) {
perror("socket() failed");
exit(1);
}
// 初始化socket地址
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(atoi(argv[1]));
// 绑定socket和地址
if (bind(serv_socket, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
perror("bind() failed");
exit(1);
}
// 使socket处于监听状态
if (listen(serv_socket, 5) == -1) {
perror("listen() failed");
exit(1);
}
// 接收客户端请求
clnt_addr_size = sizeof(clnt_addr);
clnt_socket = accept(serv_socket, (struct sockaddr*)&clnt_addr, &clnt_addr_size);
if (clnt_socket == -1) {
perror("accept() failed");
exit(1);
}
// 处理客户端请求
while (1) {
int str_len = read(clnt_socket, buffer, BUF_SIZE);
if (str_len == -1) {
perror("read() failed");
exit(1);
}
if (str_len == 0) break;
write(clnt_socket, buffer, str_len);
}
// 关闭socket
close(clnt_socket);
close(serv_socket);
return 0;
}
```
使用方法:在命令行中输入以下命令运行程序:
```
$ ./tcp_server 8080
```
其中8080为端口号,您可以根据自己的需要进行修改。之后,您可以使用telnet等工具连接到该TCP服务器,测试服务器是否正常工作。
阅读全文