在Linux 下使用 C 语言实现 socket 编程的示例代码(服务器端):
时间: 2024-02-03 17:12:09 浏览: 67
以下是一个简单的 Linux 下使用 C 语言实现 socket 编程的服务器端示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8888
#define MAX_PENDING 5
#define MAX_LINE 2048
int main(int argc, char *argv[]) {
int listen_fd, conn_fd;
struct sockaddr_in servaddr;
char buf[MAX_LINE];
int n;
// 创建套接字
if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket error");
exit(1);
}
// 设置套接字地址
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
// 绑定套接字
if (bind(listen_fd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
perror("bind error");
exit(1);
}
// 监听套接字
if (listen(listen_fd, MAX_PENDING) == -1) {
perror("listen error");
exit(1);
}
printf("Server started.\n");
// 接受客户端连接并处理请求
while (1) {
if ((conn_fd = accept(listen_fd, (struct sockaddr *)NULL, NULL)) == -1) {
perror("accept error");
continue;
}
printf("Client connected.\n");
while ((n = read(conn_fd, buf, MAX_LINE)) > 0) {
printf("Received: %s", buf);
if (write(conn_fd, buf, n) == -1) {
perror("write error");
exit(1);
}
}
printf("Client disconnected.\n");
close(conn_fd);
}
close(listen_fd);
return 0;
}
```
该示例代码中,服务器端创建了一个 TCP 套接字,绑定了一个固定的端口号,并监听客户端连接。服务器端会接受客户端的连接请求,并处理来自客户端的请求。当接受到客户端的请求后,服务器端会将请求内容原样返回给客户端,并在控制台输出接收到的请求内容。
阅读全文