当前位置: 首页 > news >正文

Socket 编程实战

各类资料学习下载合集
链接:https://pan.quark.cn/s/770d9387db5f

一、 数据的“快递之旅”:封装与解封装

在网络通信中,数据从一台电脑传到另一台电脑,就像寄快递一样,需要经过层层包装。这个过程被称为数据封装 (Encapsulation)

假设我们在代码中发送字符串"hello, world"

  1. 应用层 (程序员负责)
    • 这是我们最熟悉的层面。数据就是裸露的"hello, world"
    • 如果是 HTTP 协议,可能会封装成GET / HTTP/1.1...
  2. 传输层 (操作系统负责)
    • 为了知道这个数据该交给哪个程序(微信还是QQ),系统会自动给数据加上一个TCP 头部UDP 头部
    • 关键信息:源端口号 (16位) + 目的端口号 (16位)。
  3. 网络层 (操作系统负责)
    • 为了知道数据该发往哪台电脑,系统会再加一个IP 头部
    • 关键信息:源 IP (32位) + 目的 IP (32位)。
  4. 网络接口层 (网卡驱动负责)
    • 最后,加上以太网帧头尾,才能在网线或 WiFi 中传输。

总结:作为程序员,我们只需要关心应用层。剩下的脏活累活,Socket API 和操作系统帮我们全干了。


二、 Socket 编程:网络世界的“插座”

Socket(套接字)源于 UNIX 时代的伯克利研究组。它的出现让网络编程变得像文件读写一样简单:打开 -> 读写 -> 关闭

核心函数速览

  • socket(): 买个手机(创建套接字)。
  • bind(): 办张手机卡(绑定 IP 和端口)。
  • listen(): 等电话(监听连接)。
  • accept(): 接电话(接受连接)。
  • connect(): 拨打电话(发起连接)。
  • send()/recv(): 说话/听话(发送/接收数据)。

三、 代码实战:C 语言实现 TCP 通信

为了演示“应用层只需关注数据”这一理念,我们用 C 语言编写一个最基础的 TCP 客户端和服务器。

1. 服务器端代码 (server.c)

服务器负责监听端口,接收客户端发来的消息。

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#definePORT8888#defineBUFFER_SIZE1024intmain(){intserver_fd,new_socket;structsockaddr_inaddress;intaddrlen=sizeof(address);charbuffer[BUFFER_SIZE]={0};// 1. 创建 Socket (就像买手机
http://www.jsqmd.com/news/209713/

相关文章:

  • 8个降AI率工具推荐!继续教育学员必看
  • Qwen3Guard-Gen-8B模型适合哪些行业?教育、社交、电商全适配
  • 吐血推荐8个AI论文写作软件,MBA论文写作必备!
  • Socket 编程进阶:为什么必须搞懂“字节序”与“大小端”?
  • GitHub Pages搭建Qwen3Guard-Gen-8B项目静态官网展示
  • 工业照明自动控制系统建模:Proteus零基础指南
  • 智慧城市实战:基于AI的城市道路拥堵解决方案
  • 增强型MOSFET和耗尽型的区别
  • 企业级HCI部署陷阱频现,你真的懂MCP Azure Stack HCI吗?
  • 酒精饮品消费提醒:Qwen3Guard-Gen-8B注明未成年人禁用
  • VS Code + CMake:告别手动配置,提升10倍开发效率
  • 基于STM32CubeMX的CAN总线设置:新手教程
  • 为什么你的VSCode AI助手反应迟钝?深度剖析会话瓶颈根源
  • VSCode智能感知总出错?5分钟定位并修复会话异常问题
  • 不同磁芯电感的优缺点
  • MobileNetV3实战:从零构建移动端目标检测应用
  • 制定有效制造运营管理策略的 10 个步骤
  • 基于Multisim14.3的PCB协同设计实战案例
  • SSD1306中文手册I2C通信常见问题系统学习
  • 【MCP Azure Stack HCI 部署终极指南】:掌握混合云架构核心技能的5大关键步骤
  • 子女教育专项附加扣除:Qwen3Guard-Gen-8B说明申报方式
  • 万物识别模型压测指南:快速创建分布式测试环境
  • 神经网络(输出层的设计)
  • 中文长尾识别:解决数据不平衡的快速实验平台
  • 电商系统数据库设计实战:PowerDesigner ER图全流程
  • 解锁财务清晰度:Profit Calculator 助你直观掌握盈利状况
  • 程序员的数学(二十四)数学思维的本能化:让理性成为无需刻意的选择
  • 坚果过敏警示标签:Qwen3Guard-Gen-8B用于预包装食品
  • 多合一图像处理利器:一站式满足你的所有图片编辑需求
  • 深度神经网络输出层设计全解:从理论到实践