注意:考虑到热更新的内容比较多,我将热更新的内容分开,并全部整合放在【unity游戏开发——网络】专栏里,感兴趣的小伙伴可以前往逐一查看学习。

文章目录

    • 1、Socket套接字的作用
    • 2、Socket类型与创建
    • 3、核心属性速查表
    • 4、关键方法指南
    • 5、工作流程图解
    • 6、典型应用场景
  • 专栏推荐
  • 完结

1、Socket套接字的作用

Socket是网络通信的端点(类似电话插口),为不同设备间的数据传输提供通道。在C#中,System.Net.Sockets.Socket类是TCP/IP网络通信的基础工具。

想象场景:客户端与服务端像两个需要通话的人

  • 📞 Socket就是连接双方的电话线
  • 📦 数据包是通过电话线传递的包裹
  • 📭 IP地址是收件人地址(门牌号)
  • 🚪 端口号是具体收件窗口(门牌号下的房间号)

关键要素:

要素说明类比
本机IP+端口你的位置标识你的电话号码
对方IP+端口通信目标位置对方电话号码
通信协议数据传输规则通话语言(如英语/中文)

管道比喻:Socket像连接客户端和服务端的透明管道,数据如小球在管道中流动:

  • 发送方从管道入口投入小球
  • 接收方从管道出口取出小球
  • TCP协议保证小球顺序到达(可靠管道)
  • UDP协议不保证顺序(可能乱序到达)

2、Socket类型与创建

常用通信类型对比

类型协议特点适用场景
流套接字(Stream)TCP可靠连接
数据有序
自动重传丢失数据
文件传输、网页浏览
需要高可靠性的场景
数据报套接字(Dgram)UDP无连接
传输快
不保证顺序和到达
实时游戏、视频直播
可容忍少量丢失的场景

构造黄金组合

// TCP套接字(可靠连接)
Socket tcpSocket = new Socket(AddressFamily.InterNetwork,  // 使用IPv4地址SocketType.Stream,          // 流式传输ProtocolType.Tcp             // TCP协议
);// UDP套接字(快速传输)
Socket udpSocket = new Socket(AddressFamily.InterNetwork,  // IPv4地址SocketType.Dgram,            // 数据报模式ProtocolType.Udp             // UDP协议
);

3、核心属性速查表

属性作用示例
Connected检查连接状态if(socket.Connected){ ... }
Available可读取的字节数int dataSize = socket.Available;
LocalEndPoint获取本机地址+端口IPEndPoint local = (IPEndPoint)socket.LocalEndPoint;
RemoteEndPoint获取对方地址+端口IPEndPoint remote = (IPEndPoint)socket.RemoteEndPoint;
ProtocolType查看协议类型if(socket.ProtocolType == ProtocolType.Tcp){ ... }

4、关键方法指南

服务端必备三步骤

// 1. 绑定地址端口(设置接听座机)
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8080); // 监听所有网卡的8080端口
socket.Bind(endPoint);// 2. 开始监听(打开电话铃声)
socket.Listen(10); // 允许10个等待连接// 3. 接受客户端连接(接听电话)
Socket clientSocket = socket.Accept(); // 阻塞直到有客户端连接

客户端连接一步到位

// 连接指定服务器(拨打对方电话)
socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.100"), 8080));

通用终止操作

// 优雅关闭(先说再见再挂电话)
socket.Shutdown(SocketShutdown.Both); // 停止收发
socket.Close();                       // 释放资源

5、工作流程图解

TCP
UDP
创建Socket
类型选择
Bind+Listen+Accept
直接收发数据
建立连接通道
通过Send/Recv传输数据
Shutdown+Close

6、典型应用场景

  1. MMO游戏服务器:使用TCP保证玩家位置同步的可靠性
  2. 实时竞技游戏:UDP传输快速的位置更新包
  3. 文件传输工具:TCP确保文件完整无误
  4. 视频会议系统:UDP传输即使丢失少量帧也可接受

专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】
【unity游戏开发——编辑器扩展】
【unity游戏开发——热更新】
【unity游戏开发——网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87067.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87067.shtml
英文地址,请注明出处:http://en.pswp.cn/web/87067.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(二)应用层HTTP协议

目录 1、HTTP概念 ​编辑2、工作流程​​ 3、HTTP vs HTTPS​​ 4、HTTP请求特征总结​ 5、持久性和非持久性连接 非持久连接(HTTP/1.0)​​ ​​持久连接(HTTP/1.1)​​ 1、HTTP概念 HTTP(HyperText Transfer …

c# IO密集型与CPU密集型任务详解,以及在异步编程中的使用示例

文章目录 IO密集型与CPU密集型任务详解(C#示例)一、基本概念1. IO密集型任务2. CPU密集型任务 二、C#示例1. IO密集型示例1.1 文件操作异步示例1.2 网络请求异步示例1.3 数据库操作异步示例 2. CPU密集型示例2.1 基本CPU密集型异步处理2.2 并行处理CPU密…

用lines_gauss的width属性提取缺陷

自己做了一个图,这个图放在资源里了 结果图是这样(这里只结算了窄区) 代码和备注如下 read_image (Image11, C:/Users/Administrator/Desktop/分享/15/11.png) rgb1_to_gray (Image11, GrayImage) invert_image (GrayImage, ImageInvert) thr…

从0到100:房产中介小程序开发笔记(中)

背景调研 为中介带来诸多优势,能借助它打造专属小程序,方便及时更新核实租赁信息,确保信息准确无误,像房屋的大致地址、租金数额、租赁条件、房源优缺点等关键信息都能清晰呈现。还可上传房屋拍摄照片,这样用户能提前…

【AI 时代的网络爬虫新形态与防护思路研究】

网络爬虫原理与攻击防护的深度研究报告 网络爬虫技术已进入AI驱动的4.0时代,全球自动化请求流量占比突破51%,传统防御手段在面对高度仿真的AI爬虫时已显疲态。基于2025年最新数据,深入剖析网络爬虫的基本原理、工作流程、分类与攻击方式&…

低代码平台架构设计与关键组件

低代码平台的架构设计是其核心能力的关键支撑,需要平衡可视化开发的便捷性、生成应用的健壮性与性能、可扩展性以及企业级需求(如安全、多租户、集成)。以下是一个典型的企业级低代码平台架构概览及其关键组件: https://example.…

电商 ERP 系统集成接口指南

电商 ERP 系统的高效运行依赖于与多个业务系统的无缝对接,需要集成的核心接口包括:商品管理、订单处理、库存同步、物流配送、客户管理、财务结算等。这些接口是实现数据互通、业务协同的关键桥梁。 一、电商 ERP 系统集成所需接口类型 (一…

Python实现对WPS协作群进行群消息自动推送

前言 本文是该专栏的第59篇,后面会持续分享python的各种干货知识,值得关注。 相信有些同学在工作或者项目中,都会使用到“WPS协作”作为办公聊天软件。如果说,有些项目的监控预警正好需要你同步到WPS协作群,这个时候需要怎么去做呢? 而本文,笔者将基于WPS协作,通过Py…

js严格模式和非严格模式

好的,这是一个非常基础且重要的概念。我们来详细解析一下 JavaScript 中的严格模式(Strict Mode)和非严格模式(Sloppy Mode)。 可以把它想象成参加一场考试: 非严格模式:就像是开卷、不计时的…

板凳-------Mysql cookbook学习 (十一--------1)

第11章:生成和使用序列 11.0 引言 11.1 创建一个序列列并生成序列值 CREATE TABLE insect ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id),name VARCHAR(30) NOT NULL,date DATE NOT NULL,origin VARCHAR(30) NOT NULL); 字段说明 ‌id…

Vue3 中 Excel 导出的性能优化与实战指南

文章目录 Vue3 中 Excel 导出的性能优化与实战指南引言:为什么你的导出功能会卡死浏览器?一、前端导出方案深度剖析1.1 xlsx (SheetJS) - 轻量级冠军1.2 exceljs - 功能强大的重量级选手 二、后端导出方案:大数据处理的救星2.1 为什么大数据需…

安卓RecyclerView实现3D滑动轮播效果全流程实战

安卓RecyclerView实现3D滑动轮播效果全流程实战 1. 前言 作为一名学习安卓的人,在接触之前和之后两种完全不同的想法: 好看和怎么实现 当初接触到RecyclerView就觉得这个控件就可以把关于列表的所有UI实现,即便不能,也是功能十分强大 放在现在依然是应用最广的滑动列表控…

电机控制——电机位置传感器零位标定

在有感FOC算法中电机位置是一个重要的输入,电机位置传感器的作用就是测量电机的旋转角度,通常是输出sin(Theta)和cos(Theta)两路模拟信号,根据这两路模拟信号测得电机旋转绝对角度。注意传感器测量的是机械角度,不是电角度。 关于…

生物化学(实验流程) PCR聚合酶链式反应: DNA 凝胶电泳实验原理 实验流程方法 实操建议笔记

凝胶电泳是分子生物学中最常用的技术之一,广泛用于 DNA 片段的可视化、分离与识别。在获取DNA 凝胶电泳相关设备(电泳设备 & DNA样品染料 & 凝胶 & 染料)之后,可以考虑进行电泳操作。 整体电泳操作流程(从…

Python应用指南:利用高德地图API获取公交+地铁可达圈(三)

副标题:基于模型构建器的批处理多份CSV转换为点、线、面图层 在地理信息系统(GIS)的实际应用中,我们经常需要处理大量以表格形式存储的数据,例如人口统计数据、兴趣点(POI)信息和监测站点记录等…

每日算法刷题Day38 6.25:leetcode前缀和3道题,用时1h40min

5. 1749.任意子数组和的绝对值的最大值(中等,学习) 1749. 任意子数组和的绝对值的最大值 - 力扣(LeetCode) 思想 1.给你一个整数数组 nums 。一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 nu…

创客匠人视角下创始人 IP 打造的底层逻辑与实践路径

在知识付费行业蓬勃发展的当下,创始人 IP 已成为连接用户与商业价值的核心纽带。创客匠人创始人老蒋在与行业头部 IP 洪鑫的对话中揭示了一个关键命题:IP 打造的成败,始于发心与理念的根基。从洪鑫教育中心营收超 6000 万的案例来看&#xff…

2022/7 N2 jlpt词汇

気力(きりょく) 清く(きよく) 記録(きろく) 記憶(きおく) 賢い(かしこい) 偉い(えらい) 凄い(すごい) 鋭い&am…

系统性能优化-8 TCP缓冲区与拥塞控制

每个 TCP 连接都有发送缓冲区和接收缓冲区,发送缓冲区存已发送未确认数据和待发送数据,接收缓冲区存接收但是没有被上层服务读取的数据。 # cat /proc/net/sockstat sockets: used 1885 TCP: inuse 537 orphan 0 tw 3 alloc 959 mem 10其中 mem 代表当前…

【前端】vue工程环境配置

环境准备(Windows版本) nodejs安装 (base) PS C:\Users\Administrator> nvm install 18.8.0 (base) PS C:\Users\Administrator> nvm use 18.8.0 Now using node v18.8.0 (64-bit) (base) PS C:\Users\Administrator> npm -v 8.18.0 (base) PS C:\Users\Administrat…