【linux】第四天 TCP网络编程及Web服务器搭建
目录一、TCP客户端编程1、TCP的概述2、创建TCP套接字3、调用connect函数连接服务器4、send发送消息5、recv接收消息(默认阻塞)6、tcp客户端 收发数据​二、TCP服务器编程1、作为服务器的条件2、listen 监听函数3、accept提取客户端的连接(阻塞)三、close关闭套接字1、作为客户端2、作为服务器四、三次握手五、四次挥手六、并发服务器--多进程七、端口复用概述八、设置套接字端口复用九、并发服务器--多线程十、Web服务器一、TCP客户端编程1、TCP的概述客户端:主动连接服务器、和服务器进行通信服务器:被动被客户端连接,启动新的线程或进程 服务器客户端(并发服务器)2、创建TCP套接字int sockfd = socket(AF_INET, SOCK_STREAM, 0);socket函数创建的TCP套接字,没有端口,默认为主动连接特性3、调用connect函数连接服务器tcp客户端通信之前 必须事先 建立和服务器的连接#include sys/types.h/* See NOTES */#include sys/socket.hint connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);addr地址结构体 存放的是服务器的IP、PORT 返回值:成功为0 失败-//连接服务器 struct sockaddr_in ser_addr; bzero(ser_addr, sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(8000); ser_addr.sin_addr.s_addr = inet_addr("10.9.11.251"); connect(sockfd, (struct sockaddr *)ser_addr, sizeof(ser_addr));如果sockfd没有固定端口 在调用connect时系统自动分配随机端口为源端口4、send发送消息ssize_t send(int sockfd, const void *buf, size_t len, int flags);sockfd:套接字buf:需要发送的字符串的首元素地址len:需要发送的字符串的实际长度flags:默认为0成功返回实际发送的字节数,失败返回-1注意:TCP并不能发送0长度报文,但是UDP可以5、recv接收消息(默认阻塞)#include sys/types.h#includesys/socket.hssize_t recv(int sockfd, void *buf, size_t len, int flags);sockfd:套接字buf:存放收到的消息len:最大能接收的长度flags:默认为0 成功返回收到的实际字节数, 失败返回-1recv如果收到0长度报文,表明对方已经断开连接。close(sockfd);断开连接6、tcp客户端 收发数据cilent.c#include stdio.h #include sys/socket.h #include unistd.h #include sys/types.h #include netinet/in.h #include string.h #include arpa/inet.h int main(int argc, char const *argv[]) { //创建TCP套接字 int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd 0) { perror("socket"); return 0; } printf("sockfd = %d\n", sockfd); //连接服务器 struct sockaddr_in ser_addr; bzero(ser_addr, sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(8082); ser_addr.sin_addr.s_addr = inet_addr("192.168.172.179"); connect(sockfd, (struct sockaddr *)ser_addr, sizeof(ser_addr)); //send发送数据 send(sockfd, "hello tcp", strlen("hello tcp"), 0); //recv接收数据 unsigned char buf[1500] = ""; int len = recv(sockfd, buf, sizeof(buf), 0); printf("len=%d buf=%s\n", len, buf); //关闭套接字 close(sockfd); return 0; }NetAssist充当服务器:二、TCP服务器编程1、作为服务器的条件需要bind函数 为服务器绑定固定的端口、IP使用listen函数 让服务器套接字 由主动变被动。等待客户端的连接到来accept提取到来的客户端。2、listen 监听函数#includesys/types.h/* See NOTES */#includesys/socket.hint listen(int sockfd, int backlog); 功能:

相关新闻

贝叶斯参数估计

贝叶斯参数估计

贝叶斯估计是一种基于贝叶斯统计推断的参数估计方法,它利用先验知识和观测数据来推断参数的后验分布,并从中得出参数的估计值。贝叶斯估计的核心思想是将参数视为随机变量,而不是固定但未知的常数,从而能够更好地处理不确定性。 贝…

2026/7/26 18:57:10 阅读更多 →
如何用25美元打造AI智能眼镜:OpenGlass开源方案完整指南

如何用25美元打造AI智能眼镜:OpenGlass开源方案完整指南

如何用25美元打造AI智能眼镜:OpenGlass开源方案完整指南 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 想要拥有一副能够识别物体、翻译文字、记录生活的智能眼镜…

2026/7/26 18:57:10 阅读更多 →
Speechless原理大揭秘:Chrome插件如何实现微博内容的高效抓取与PDF转换

Speechless原理大揭秘:Chrome插件如何实现微博内容的高效抓取与PDF转换

Speechless原理大揭秘:Chrome插件如何实现微博内容的高效抓取与PDF转换 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless Speechless是一款…

2026/7/26 18:56:10 阅读更多 →

最新新闻

JetBrains IDE 18个安全漏洞实战检测、修复与供应链风险管控方案

JetBrains IDE 18个安全漏洞实战检测、修复与供应链风险管控方案

1 漏洞批次完整风险梳理 2026年7月JetBrains官方安全公告一次性披露旗下全线开发工具18个安全缺陷,漏洞覆盖桌面IDE客户端、远程开发服务、TeamCity持续集成服务三大核心组件。 本次漏洞分级不采用模糊描述,直接按CVSS v3.1评分划分风险等级:…

2026/7/26 19:18:16 阅读更多 →
Claude Code安全插件全面解析:从安装配置到企业级应用实战

Claude Code安全插件全面解析:从安装配置到企业级应用实战

最近在AI编程助手领域,Anthropic公司对其Claude Code工具进行了重要更新——扩大了安全插件的访问权限。这一变化让更多开发者能够体验到这款专注于代码安全的AI助手,对于提升项目代码质量和安全性具有重要意义。 本文将全面解析Claude Code的安全插件功…

2026/7/26 19:18:16 阅读更多 →
AI协作重构Python技术债务:Kimi、Qwen、GLM实战对比

AI协作重构Python技术债务:Kimi、Qwen、GLM实战对比

最近接手了一个典型的"屎山"项目:一个用 Python 2.7 写的电商爬虫系统,代码里充斥着全局变量、硬编码路径、魔法数字,还有各种 try-except-pass 的"静默错误"。团队评估后认为,完全重写需要 3 个月&#xff0…

2026/7/26 19:18:16 阅读更多 →
Agents-A1-5bit:突破性的5-bit量化视觉语言模型,让AI助手在Mac上飞起来

Agents-A1-5bit:突破性的5-bit量化视觉语言模型,让AI助手在Mac上飞起来

Agents-A1-5bit:突破性的5-bit量化视觉语言模型,让AI助手在Mac上飞起来 【免费下载链接】Agents-A1-5bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Agents-A1-5bit 在AI模型日益庞大、计算需求不断攀升的今天,如何…

2026/7/26 19:18:16 阅读更多 →
Vidupe视频去重工具:智能识别重复视频文件的终极解决方案

Vidupe视频去重工具:智能识别重复视频文件的终极解决方案

Vidupe视频去重工具:智能识别重复视频文件的终极解决方案 【免费下载链接】vidupe Vidupe is a program that can find duplicate and similar video files. V1.211 released on 2019-09-18, Windows exe here: 项目地址: https://gitcode.com/gh_mirrors/vi/vidu…

2026/7/26 19:18:16 阅读更多 →
终极指南:如何在Windows上获得流畅的B站体验?试试这款第三方UWP客户端!

终极指南:如何在Windows上获得流畅的B站体验?试试这款第三方UWP客户端!

终极指南:如何在Windows上获得流畅的B站体验?试试这款第三方UWP客户端! 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在…

2026/7/26 19:17:16 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻