技术文摘
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 网络编程的学习和实践中提供有益的参考。
- JavaScript 如何动态向表元素插入 id
- 在 JavaScript 中如何从 async() 函数返回的结果访问对象属性
- JavaScript 编写简单 Memoization 函数代码的方法
- FabricJS 中如何计算文本给定位置的字符高度
- Node.js 里的 decipher.update() 方法
- JavaScript 如何检查日期是否小于 1 小时前
- FabricJS 中怎样拉直 IText 对象
- FabricJS 中获取文本缩放宽度的方法
- JavaScript 中计算 (m)1/n 的值
- FabricJS中怎样禁用矩形的可选择性
- 怎样在不改变原始数组时进行数组拼接
- Vue 中怎样实现图片像素化处理
- 在 HTML 页面中用 JavaScript 水平添加元素的方法
- JavaScript 如何从字符串中移除文件扩展名
- JavaScript中定时器工作原理的解释