news 2026/6/15 14:06:37

Socket 编程实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 (就像买手机
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:06:01

中文特定领域识别:快速定制预训练模型的实战教程

中文特定领域识别&#xff1a;快速定制预训练模型的实战教程 如果你是一位垂直行业开发者&#xff08;比如医疗设备领域&#xff09;&#xff0c;想要针对特定场景定制物体识别功能&#xff0c;但又不想从头训练模型&#xff0c;那么这篇教程就是为你准备的。本文将带你快速上手…

作者头像 李华
网站建设 2026/6/15 11:01:49

万物识别模型监控:生产环境指标收集的快速实现

万物识别模型监控&#xff1a;生产环境指标收集的快速实现 作为一名SRE工程师&#xff0c;监控线上物体识别服务的性能是保障业务稳定性的关键。但传统搭建监控系统需要手动集成Prometheus、Grafana等多个组件&#xff0c;配置复杂且耗时。本文将介绍如何通过预装环境快速实现生…

作者头像 李华
网站建设 2026/6/15 7:46:35

通过minicom调试RS485通信的项目应用

用 minicom 调试 RS485&#xff1f;别再靠猜了&#xff0c;这才是工业通信调试的正确姿势你有没有遇到过这样的场景&#xff1a;现场设备一堆传感器通过 RS485 接在总线上&#xff0c;网关就是一块树莓派或工控板&#xff0c;但上电后数据死活读不出来。你改代码、换线、测电压…

作者头像 李华
网站建设 2026/6/15 11:03:10

NEFTune:加入噪声的嵌入提升指令微调效果

摘要 我们发现,通过一种简单的数据增强方法,可以显著提升语言模型的微调效果。NEFTune 在训练过程中向嵌入向量添加噪声。在使用 Alpaca 对 LLaMA-2-7B 进行标准微调时,其在 AlpacaEval 上的表现为 29.79%,而使用带噪嵌入后则上升至 64.69%。NEFTune 在多个现代指令数据集…

作者头像 李华
网站建设 2026/6/14 18:55:03

仅限高级用户:解锁VSCode自定义Agent极致性能的3个私密配置

第一章&#xff1a;VSCode自定义智能体性能优化概述在现代开发环境中&#xff0c;VSCode 作为主流代码编辑器&#xff0c;广泛支持通过扩展机制构建自定义智能体&#xff08;Custom Agent&#xff09;&#xff0c;用于自动化代码分析、智能补全与实时性能监控。然而&#xff0c…

作者头像 李华