news 2026/4/23 10:11:38

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/4/23 11:26:33

从零到上线:24小时打造你的专属‘识万物‘App

从零到上线&#xff1a;24小时打造你的专属识万物App 作为一名前端工程师&#xff0c;参加黑客马拉松时最头疼的莫过于AI模型部署。最近我想开发一个能识别生活用品的应用&#xff0c;UI设计对我来说不是问题&#xff0c;但深度学习环境的搭建却让我望而却步。经过一番探索&…

作者头像 李华
网站建设 2026/4/23 11:31:03

万物识别标注工具集成:从数据标注到模型训练的捷径

万物识别标注工具集成&#xff1a;从数据标注到模型训练的捷径 作为一名数据标注团队的负责人&#xff0c;你是否经常遇到这样的困扰&#xff1a;团队成员用不同工具标注的数据格式五花八门&#xff0c;转换起来费时费力&#xff1b;好不容易整理好数据&#xff0c;又要折腾环境…

作者头像 李华
网站建设 2026/4/23 13:20:12

万物识别模型联邦学习:快速搭建分布式训练环境

万物识别模型联邦学习&#xff1a;快速搭建分布式训练环境 联邦学习作为一种新兴的隐私保护机器学习范式&#xff0c;正在物体识别领域展现出巨大潜力。但对于大多数研究者来说&#xff0c;搭建分布式训练环境往往需要耗费大量时间在环境配置和调试上。本文将介绍如何利用预配置…

作者头像 李华
网站建设 2026/4/23 11:31:02

ms-swift支持国产Ascend NPU,国产化算力新选择

ms-swift 支持国产 Ascend NPU&#xff0c;开启大模型国产化算力新篇章 在AI从实验室走向产业落地的今天&#xff0c;一个核心问题正日益凸显&#xff1a;我们能否在不依赖国外高端GPU的前提下&#xff0c;高效完成大模型的训练、微调与推理&#xff1f;尤其是在金融、政务、能…

作者头像 李华
网站建设 2026/4/23 13:00:52

基于STM32的ws2812b控制完整指南

玩转炫彩灯带&#xff1a;如何用STM32精准驾驭WS2812B你有没有想过&#xff0c;家里的智能氛围灯、舞台上的流动光效&#xff0c;甚至艺术装置中那条会“呼吸”的LED灯带&#xff0c;背后其实是由一个个微小的数字信号驱动起来的&#xff1f;这些看似魔法般的视觉效果&#xff…

作者头像 李华
网站建设 2026/4/23 11:30:10

VSCode + Claude高效编程实战(内存占用降低70%的秘密)

第一章&#xff1a;VSCode Claude高效编程概览在现代软件开发中&#xff0c;集成开发环境&#xff08;IDE&#xff09;与人工智能助手的结合正显著提升编码效率。Visual Studio Code&#xff08;VSCode&#xff09;凭借其轻量级架构、丰富的插件生态和高度可定制性&#xff0c…

作者头像 李华