C# 获取随机可用端口号
TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号。对于这65536个端口号有以下的使用规定:
(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1---1023之间的端口号,是由IANA来管理的;
(2)客户端只需保证该端口号在本机上是惟一的就可以了。客户端口号因存在时间很短暂又称临时端口号;
(3)大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。
那么如何随机获取一个可用端口号呢,我们首先可以调用如下方法获取所有已用端口,随机取出一个1024--65535之间的端口,然后判断此端口是否被占用,如果被占用,继续取随机端口,直到取出未占用的随机端口即可。
/// <summary>
/// 获取操作系统已用的端口号
/// </summary>
/// <returns></returns>
public static IList PortIsUsed()
{
//获取本地计算机的网络连接和通信统计数据的信息
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
//返回本地计算机上的所有Tcp监听程序
IPEndPoint[] ipsTCP = ipGlobalProperties.GetActiveTcpListeners();
//返回本地计算机上的所有UDP监听程序
IPEndPoint[] ipsUDP = ipGlobalProperties.GetActiveUdpListeners();
//返回本地计算机上的Internet协议版本4(IPV4 传输控制协议(TCP)连接的信息。
TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
IList allPorts = new ArrayList();
foreach (IPEndPoint ep in ipsTCP)
{
allPorts.Add(ep.Port);
}
foreach (IPEndPoint ep in ipsUDP)
{
allPorts.Add(ep.Port);
}
foreach (TcpConnectionInformation conn in tcpConnInfoArray)
{
allPorts.Add(conn.LocalEndPoint.Port);
}
return allPorts;
}
转载于:https://www.cnblogs.com/moonlight-zjb/p/3490652.html
C# 获取随机可用端口号相关推荐
- c++获取可用端口号_PG高可用架构实施方案
1.PG概述 PostgreSQL是一个功能非常强大的.源代码开放的客户/服务器关系型数据库管理系统(RDBMS).PostgreSQL最初设想于1986年,当时被叫做Berkley Postgres ...
- 用python获取usb设备端口号,用Python查询连接的USB设备信息的简单方法?
如何在Python中查询连接的USB设备信息? 我想得到UID设备名(例如:SonyEricsson W660),设备路径(例如:dev/ttyACM0) 此外,上述信息中的最佳参数是什么,以便在设备 ...
- QT udp自动获取对方ip和端口号
Tip: 用printf打印QString方法如下: QString output printf("%s\n",output.toStdString().data()); 正文:Q ...
- java获取本机IP,系统随机分配端口号,获取当前线程ID
ServerSocket serverSocket = null; //读取空闲的可用端口 String localIp = null; try {serverSocket = new ServerS ...
- windows如何获取端口号
一.win+R打开运行菜单,并输入cmd进入命令提示行 二.在命令提示行输入netstat -ano即可获取所有ip地址与端口号(端口号为ip地址冒号后面的数字)
- 获取本机ip和端口号
获取本机ip window.location.hostname 获取端口号 location.port 获取主机名+端口号 location.host 示例 console.log('ip:'+loc ...
- 获取游戏服务器ip与端口信息,查看游戏服务器ip端口号
查看游戏服务器ip端口号 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直 ...
- netstat -anp |awk |cut 通过pid获取应用程序的端口号
脚本如下 #下列 | 表示接续处理. netstat -anopt |grep $pid|head -n 1|awk '{printf $4}'|cut -d: -f4 脚本解释 netstat -a ...
- 实时获取端口号和ip地址(域名)
使用自定义获取端口号和ip地址(域名)window.location 在项目当中,很多项目是属于外包的,当项目做完就需要部署然后交给甲方,那么此时项目就不是我们负责 端口号,和域名,后期因为部署到服务 ...
最新文章
- searchsploit漏洞查找工具使用指南(exploit-db.com 离线工具 exploitdb)
- OpenCV基于ARM的Linux系统的交叉编译
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“...
- final、finally与finalize的区别
- web browser 发展史
- 4核处理器_买电脑选4核、6核还是8核,从业是十年的专家终于讲清楚了差异
- 30多套API接口,还怕满足不了你的量化交易需求?
- Servlet中上传下载模板代码
- 我经常登录的GIS专业论坛
- 宇视服务器硬件如何安装,宇视科技无需后端平台与服务器支撑 即可形成小型人脸识别方案...
- vagrant设置磁盘大小
- python的取整和取余_python中取整运算符
- 冬天来了,分享几个网页下雪js特效
- node爬取某app数据_使用NodeJs,实现数据抓取
- 05——驾校科目一考试系统——验证账号密码
- 截至2015年工作中接触集成过的硬件设备整理记录
- 配置小程序开发者工具及其使用(下)
- iOS 在线JSON转模型工具(Swift、Objective-C、Java)
- 怎么设置邮箱自动回复?哪个品牌邮箱自动回复设置最简单?
- 12个Material Design风格控件的使用
热门文章
- 【Linux系统编程】进程的控制:结束进程、等待进程结束
- vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍
- MySQL的用户和授权
- 微信小程序封装的Promise工具类 ES6语法
- C++中 引用与取地址的区别
- 使用debug工具修改寄存器中的值
- 如何删除wordpress侧边栏功能的wordpress.org链接
- FatFsVersion0.01源码分析
- CF-557 E. Ann and Half-Palindrome(暴力Trie)
- 折纸机器人的步骤图解_儿童节特辑丨为你精选二十款超好玩的折纸玩具,这么多总有你的菜!...