注意
:考虑到热更新的内容比较多,我将热更新的内容分开,并全部整合放在【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、工作流程图解
6、典型应用场景
- MMO游戏服务器:使用TCP保证玩家位置同步的可靠性
- 实时竞技游戏:UDP传输快速的位置更新包
- 文件传输工具:TCP确保文件完整无误
- 视频会议系统: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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!