当前位置: 首页 > news >正文

【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);

开发记忆口诀

  1. IPAddress.Parse 转字符串 → 获得地址对象
  2. new IPEndPoint(地址, 端口) → 锁定通信目标
  3. 本机测试用 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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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

相关文章:

  • Java 中通信接口
  • [Linux] PXE
  • 各种常用的串口助手工具分享
  • Python爬虫-爬取汽车之家全部汽车品牌及车型数据
  • 【系统分析师】高分论文:论软件测试方法和工具的选择
  • 量子算法入门——5.Qiskit库介绍与简单应用(2)
  • React与Vue的主要区别
  • 数据结构复习4
  • AWTK-MVVM的一些使用技巧总结(1)
  • 爪形行列式
  • 建造者模式 - Flutter中的乐高大师,优雅组装复杂UI组件!
  • 前后端分离场景下的用户登录玩法Sa-token框架使用
  • 【系统分析师】2021年真题:论文及解题思路
  • XWPFDocument导出word文件
  • 计算机组成原理与体系结构-实验四 微程序控制器 (Proteus 8.15)
  • day46/60
  • Java垃圾收集机制Test
  • Modbus 报文结构与 CRC 校验实战指南(一)
  • 5 c++核心——文件操作
  • 【NLP 实战】蒙古语情感分析:从 CNN 架构设计到模型训练的全流程解析(内附项目源码及模型成果)