HoRain云--Linux系统编程——TCP服务器

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
| 专栏名称 | 专栏介绍 |
| 《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
| 《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
| 《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
| 《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
| 《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
| 《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
🌟 Linux TCP服务器编程:从零开始的轻松指南
🧠 用生活比喻理解TCP服务器
🔧 TCP服务器的"四步走"流程
1️⃣ 建立"咖啡店"(套接字创建)
2️⃣ 给店起个名字(绑定地址和端口)
3️⃣ 准备迎接顾客(监听)
4️⃣ 接待顾客(accept + 多线程)
💡 为什么需要多线程?
🚀 让服务器"永不掉线"(守护进程)
📚 推荐学习资源
💬 互动时间

🌟 Linux TCP服务器编程:从零开始的轻松指南
嘿,朋友!看到你对Linux TCP服务器编程感兴趣,我超开心的!这可是网络编程的"心脏"啊,就像你家的咖啡机,每天早上准时给你来一杯提神的咖啡一样可靠。
🧠 用生活比喻理解TCP服务器
想象一下,你开了一家咖啡店(TCP服务器),而顾客(客户端)来点单。当顾客走进来,迎宾员(listen函数)会把他们带到服务台(socket),然后服务员(accept返回的新socket)负责和顾客沟通,点单、上咖啡、收银。
关键点:迎宾员(listen)不直接和顾客点单,而是把顾客交给服务员(accept),这样迎宾员可以继续迎接新顾客。
🔧 TCP服务器的"四步走"流程
1️⃣ 建立"咖啡店"(套接字创建)
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
就像买下店面,准备开始营业。
2️⃣ 给店起个名字(绑定地址和端口)
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY; // 监听所有IP
addr.sin_port = htons(8080); // 端口8080
bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));
就像给你的咖啡店挂个招牌,告诉顾客"来这儿找我"。
3️⃣ 准备迎接顾客(监听)
listen(sockfd, 5); // 最多等待5个顾客
店员准备好,等待顾客上门。
4️⃣ 接待顾客(accept + 多线程)
while(1) {
int client_sock = accept(sockfd, NULL, NULL);
pthread_t tid;
pthread_create(&tid, NULL, handle_client, &client_sock);
}
每次有顾客来,就开一个新的服务窗口,让主线程可以继续迎接新顾客。
💡 为什么需要多线程?
想象一下,你只有一名店员,顾客一个接一个排队,效率超级低!多线程就像给你的咖啡店开了多个服务窗口,每个窗口都有一位服务员,可以同时接待多个顾客,咖啡店效率直接起飞!
🚀 让服务器"永不掉线"(守护进程)
想让你的咖啡店24小时营业,即使你关掉电脑也不关?那就需要让服务器变成"守护进程":
void daemonize() {
pid_t pid = fork();
if (pid > 0) exit(0); // 父进程退出
setsid(); // 成为新会话组长
pid_t pid2 = fork();
if (pid2 > 0) exit(0); // 父进程退出
// 重定向标准输入输出
int null_fd = open("/dev/null", O_RDWR);
dup2(null_fd, STDIN_FILENO);
dup2(null_fd, STDOUT_FILENO);
dup2(null_fd, STDERR_FILENO);
chdir("/"); // 改变工作目录
}
这样,即使你关掉xshell,你的咖啡店(服务器)依然会正常营业!
📚 推荐学习资源
我超爱的几本书:
- 《Unix网络编程》(卷1):TCP编程的"圣经",虽然有点厚,但绝对值得读
- 《Linux高性能服务器编程》:实战性强,适合想快速上手的小伙伴
- 《Linux系统编程》:讲得特别清楚,适合入门
📌 小建议:别光看书,一定要动手写代码!从最简单的"Hello, World"服务器开始,慢慢增加功能,就像学做咖啡一样,从一杯美式开始,慢慢变成咖啡大师。
💬 互动时间
你对TCP服务器编程有什么具体问题吗?是想了解某个函数的具体用法,还是想知道如何处理并发连接?或者你已经尝试写过服务器代码,但遇到了什么困难?
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙










