技术文摘
Linux 下基于 socket 实现 TCP 服务端的示例代码
2024-12-29 00:24:53 小编
在当今的计算机技术领域,Linux 操作系统因其稳定性和高效性而备受青睐。在 Linux 环境下,通过使用 Socket 实现 TCP 服务端是网络编程中的常见任务。以下为您呈现相关的示例代码及详细解释。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
int port = 8080;
// 创建套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("创建套接字失败");
exit(EXIT_FAILURE);
}
// 初始化地址结构
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("绑定失败");
exit(EXIT_FAILURE);
}
// 监听连接
if (listen(server_fd, 5) < 0) {
perror("监听失败");
exit(EXIT_FAILURE);
}
printf("等待连接...\n");
// 接受连接
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {
perror("接受连接失败");
exit(EXIT_FAILURE);
}
printf("连接建立\n");
// 接收数据
char buffer[1024] = {0};
int valread = read(new_socket, buffer, 1024);
printf("%s\n", buffer);
// 发送响应
char *response = "Hello from server";
send(new_socket, response, strlen(response), 0);
// 关闭套接字
close(new_socket);
close(server_fd);
return 0;
}
在上述代码中,首先使用 socket 函数创建一个 TCP 套接字。然后,通过 bind 函数将套接字与特定的地址和端口进行绑定。接着,使用 listen 函数开始监听连接请求。
当有客户端发起连接时,accept 函数会接受连接并返回一个新的套接字用于与该客户端进行通信。之后,使用 read 函数接收客户端发送的数据,并通过 send 函数向客户端发送响应。
最后,关闭与客户端通信的套接字以及服务器端的监听套接字。
通过这段示例代码,您可以初步了解在 Linux 下基于 Socket 实现 TCP 服务端的基本流程和关键步骤。希望这能为您在 Linux 网络编程的学习和实践中提供有益的参考。
- 怎样准确识别与优化阻塞页面渲染的任务
- 伪元素宽度自适应文字内容、限制最大宽度且不换行的方法
- Nginx代理合并多个项目的使用方法
- VSCode 中折叠代码区域怎样复制
- 浏览器调试中怎样保留元素点击事件
- CSS绘制带透明缺口圆环的方法
- 父组件和子组件数据表格ID不同时,选中状态回显如何实现
- CSS中英文混排文本边框变形问题的解决方法
- 用正则表达式捕获完整script标签内容的方法
- ESLint 与 Tree Shaking:怎样实现高效代码优化
- 在 ant-design-vue 折叠面板里怎样防止 a-radio-group 被当作子面板
- CSS原子化常量标准化:有无统一预定义常量
- 弹性盒子布局中项目对齐方式问题的解决方法
- Vue3 中 onload 方法不执行的原因
- Node中用Request获取HTML文本内容编码时如何避免编码异常