【unity游戏开发——网络】IP和端口相关的类——IPAddress和IPEndPoint
注意
:考虑到热更新的内容比较多,我将热更新的内容分开,并全部整合放在【unity游戏开发——网络】专栏里,感兴趣的小伙伴可以前往逐一查看学习。
文章目录
- 前言
- 一、核心类解析
- 1、IPAddress类(地址管理)
- 2、IPEndPoint类(地址+端口绑定)
- 二、实际应用场景
- 1、游戏服务器连接示例
- 2、端口使用规范表
- 三、避坑指南
- 1、IP格式陷阱
- 2、特殊地址场景
- 3、端口冲突处理
- 四、最佳实践
- 专栏推荐
- 完结
前言
我们知道想要进行网络通信,进行网络连接,首先我们需要找到对应设备,IP和端口号是定位网络中设备必不可少的关键元素。在C#中提供了对应的IP和端口相关的类来声明对应信息,对于网络通信是必不可少的内容。
一、核心类解析
1、IPAddress类(地址管理)
using System.Net;// ▶ 三种创建IP地址的方式:
// 方式1:字节数组初始化(机械但精确)
byte[] ipBytes = { 192, 168, 1, 100 }; // 相当于[192号楼, 168单元, 1层, 100室]
IPAddress ip1 = new IPAddress(ipBytes);// 方式2:长整型初始化(不推荐,需16进制转换)
IPAddress ip2 = new IPAddress(0xC0A80164); // 192.168.1.100的16进制// 方式3:字符串解析(最常用 ★)
IPAddress ip3 = IPAddress.Parse("192.168.1.100"); // 直接写地址字符串
特殊地址说明:
127.0.0.1
= 本机ip地址IPAddress.IPv6Any
= 获取可用的IPv6地址
2、IPEndPoint类(地址+端口绑定)
// ▶ 创建通信端点(地址+房间号)
// 方式1:长整型IP+端口(不推荐)
IPEndPoint endpoint1 = new IPEndPoint(0xC0A80164, 8080); // 方式2:IPAddress对象+端口(推荐 ★)
IPAddress ip = IPAddress.Parse("192.168.1.100");
IPEndPoint endpoint2 = new IPEndPoint(ip, 8080); // 192.168.1.100:8080
端口号本质:
- 范围
0-65535
的整数(类似房间号)- 常见默认端口:HTTP=80, HTTPS=443, FTP=21
- 开发建议:自定义端口用
1024-49151
(注册端口)
二、实际应用场景
1、游戏服务器连接示例
// 连接《王者荣耀》上海服务器
IPAddress serverIP = IPAddress.Parse("121.40.89.214"); // 服务器公网IP
IPEndPoint gameEndpoint = new IPEndPoint(serverIP, 9001); // 游戏端口// 连接本机测试服务
IPAddress localIP = IPAddress.Parse("127.0.0.1"); // 本机地址
IPEndPoint testEndpoint = new IPEndPoint(localIP, 8080); // 测试端口
2、端口使用规范表
端口范围 | 用途 | 示例 |
---|---|---|
0-1023 | 系统保留端口 | HTTP=80, FTP=21 |
1024-49151 | 注册端口(推荐开发用) | 自定义游戏端口 |
49152-65535 | 动态/私有端口 | 临时通信端口 |
三、避坑指南
1、IP格式陷阱
// 错误:直接用字符串赋值
string wrongIP = "192.168.1.100"; // ❌ 不能直接当IP用// 正确:必须通过Parse转换
IPAddress correctIP = IPAddress.Parse("192.168.1.100"); // ✅
2、特殊地址场景
- 本机测试:始终用
127.0.0.1
(即使断网也能用) - 公网部署:需获取 公网IP(非192.168/10.等内网地址)
3、端口冲突处理
// 检查端口占用(需System.Net.Sockets)
using System.Net.Sockets;
bool IsPortFree(int port){TcpListener tcp = new TcpListener(IPAddress.Any, port);try{ tcp.Start(); return true; }catch{ return false; }finally{ tcp.Stop(); }
}
四、最佳实践
// 标准创建流程(推荐写法)
IPAddress targetIP = IPAddress.Parse("目标IP字符串"); // 如"118.102.111.11"
int port = 8080; // 自定义端口号
IPEndPoint communicationPoint = new IPEndPoint(targetIP, port);// 本机测试专用写法
IPEndPoint localTest = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
开发记忆口诀:
IPAddress.Parse
转字符串 → 获得地址对象new IPEndPoint(地址, 端口)
→ 锁定通信目标- 本机测试用
127.0.0.1
+ 空闲端口
专栏推荐
地址 |
---|
【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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!