本文来告诉大家如何可以获取一个可用的端口

使用如下代码可以返回一个可用的端口

        public static int GetAvailablePort(IPAddress ip){TcpListener l = new TcpListener(ip, 0);l.Start();int port = ((IPEndPoint)l.LocalEndpoint).Port;l.Stop();return port;}

在调用 Stop 方法的时候,将可以重复使用此端口,同时在系统分配里面,在一段时间内不会再次被使用,因此这个端口是安全的,可以在这里进行使用

另一个方式是使用更底层的 Socket 类型,代码如下

        public static int GetAvailablePort(IPAddress ip){using var socket = new Socket(SocketType.Stream, ProtocolType.Tcp);socket.Bind(new IPEndPoint(ip, 0));socket.Listen(1);var ipEndPoint = (IPEndPoint)socket.LocalEndPoint;var port = ipEndPoint.Port;return port;}

参阅 MiSeCo #12: Find free TCP port in the system - Michal Dymel - DevBlog

.net - In C#, how to check if a TCP port is available? - Stack Overflow

本文所有代码放在 github 和 gitee 欢迎访问

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

dotnet C# 获取一个可用的端口的方法相关推荐

  1. Windows——获取一个可用的端口

    作者:小 琛 欢迎转载,请标明出处 很多涉及到网络的业务场景下,需要给当前服务一个本机可用的端口,写死端口自然是不可取的,会像定时炸弹一样,因此最标准的解决方式就是:动态获取一个当前可以使用的端口号, ...

  2. php获取div高度,JS获取一个未知DIV高度的方法

    本文实例讲述了JS获取一个未知DIV高度的方法.分享给大家供大家参考,具体如下: 通过元素的clientHeight属性能够得到元素的高度,如:var height = element.clientH ...

  3. python3 得到一个可用未绑定端口

    单线程 单进程环境 def getPort():pscmd = "netstat -ntl |grep -v Active| grep -v Proto|awk '{print $4}'|a ...

  4. C# 获取随机可用端口号

    TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号.对于这65536个端口号有以下的使用规定: (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来 ...

  5. 在网络通讯中,如何自己分配可用的端口号和获取自己的ip地址

    在编写一些程序时,为了程序可以在其他电脑上也可以使用,而不用手动去更改ip,或者碰到端口不可用的情况.在这里找到了一个好的方法,实际使用也没有问题!故此推荐给大家! 方案: 在构建网络时,使用: cl ...

  6. linux udp套接字编程获取报文源地址和源端口(二)

    之前项目中涉及udp套接字编程,其中一个要求是获取客户端发过来报文的端口和ip地址,功能很简单,只是对这一块不很熟.之前使用的方法是通过调用recvmsg这个接口,并通过参数msg里面的msg_nam ...

  7. python 谷歌地图api_《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档...

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  8. QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数

    B类地址,斜线记法,192.168.60.1/24其中192.168.10.1是IP字符串strIP,24是子网掩码1的个数nSubnetMas,其中要求18<=nSubnetMas<=3 ...

  9. linux标准i o实例,9.3. 一个 I/O 端口例子

    ## 9.3. 一个 I/O 端口例子 我们用来展示一个设备驱动内的端口 I/O 的例子代码, 操作通用的数字 I/O 端口; 这样的端口在大部分计算机系统中找到. 一个数字 I/O 端口, 在它的大 ...

最新文章

  1. 使用Python,OpenCV实现图像之间超快速的颜色转移
  2. Python学习资源 | 3个高性能开源计算机视觉库
  3. NTU生活:NTU景点
  4. 人工智能-基于U^2-Net的肖像画生成算法
  5. LUA面向对象编程技巧
  6. 转:Redis使用认证密码登录
  7. Postman的使用说明
  8. 小程序 长按转发_小程序转发分享
  9. python贴吧签到-百度贴吧签到脚本
  10. Photoshop更换证件照底色
  11. hdu 2586 How far away ? (LCA转RMQ)
  12. 判断Linux环境是否装了NCCL,Ubuntu 16.04安装NCCL 2
  13. 我的基础网页学习之路1
  14. LeetCode/LintCode 题解丨一周爆刷字符串:神奇字符串
  15. 抵押贷款服务市场现状及未来发展趋势
  16. 【Linux】工具(3)——gcc/g++
  17. java游戏武状元苏乞儿_武状元苏乞儿演员表
  18. 慕课python下载_python下载小说
  19. 在谷歌浏览器上注册账号--具有偶然性的成功
  20. unity3D多媒体展厅触摸屏互动程序

热门文章

  1. 2022年全球市场人工智能平台总体规模、主要企业、主要地区、产品和应用细分研究报告
  2. 让狗狗短时间独自在车上也放心 Tesla智能连网功能推出狗狗模式
  3. Finger联合即构推出1V1在线钢琴陪练,切入线上音乐教育市场
  4. 优乐鸟跨境电商FBA和FBM的优缺点解析
  5. 物流基础知识(十三)
  6. 华为荣耀8插上卡显示无服务器,华为荣耀8装了2个卡有一个为啥无服务
  7. 担心隐私泄露?Dline打造可信社交
  8. kali的基本安装与使用配置
  9. 智慧施工:打造绿色环保智慧型文明工地
  10. 【三维CAD设计经验分享】CrownCAD设计:曲面设计