Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >dotnet C# 获取一个可用的端口的方法

dotnet C# 获取一个可用的端口的方法

作者头像
林德熙
发布于 2021-12-24 06:27:24
发布于 2021-12-24 06:27:24
72100
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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 方法的时候,将可以重复使用此端口,同时在系统分配里面,在一段时间内不会再次被使用,因此这个端口是安全的,可以在这里进行使用

以上代码放在 githubgitee 欢迎访问

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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;
        }

以上代码放在 githubgitee 欢迎访问

参阅 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

本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-C-%E8%8E%B7%E5%8F%96%E4%B8%80%E4%B8%AA%E5%8F%AF%E7%94%A8%E7%9A%84%E7%AB%AF%E5%8F%A3%E7%9A%84%E6%96%B9%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java】Netty创建网络服务端客户端(TCP/UDP)
Netty是一个基于Java的异步事件驱动的网络应用程序框架,专门用于快速开发高性能、可扩展和可维护的网络服务器和客户端。它提供了简单而强大的API,使开发人员能够轻松地构建各种网络应用,包括TCP、UDP、HTTP、WebSocket等。
DevFrank
2024/07/24
8730
【Java】Netty创建网络服务端客户端(TCP/UDP)
分布式专题|都说netty入门很难,那是因为你没有看我的文章!
在写代码之前,我们先看下netty的线程模型,这比那固定格式的代码将会更有趣,看完线程模型,你就知道netty写的那几段固定代码的意义了。
AI码师
2020/12/26
1.6K0
分布式专题|都说netty入门很难,那是因为你没有看我的文章!
Netty 私有协议粘包拆包实例
接下来,采用 Java + Netty 模拟该组件的功能,以演示私有协议下 netty 的粘包/拆包的实现。
鲍远林
2022/03/26
9600
09-Netty 高性能架构设计-基于Netty开发TCP服务
Netty快速入门实例-TCP服务 需求 使用IDEA创建Netty项目 Netty服务器在6668端口监听, 客户端能发送消息给服务器"Hello, 服务器~" 服务器可以回复消息给客户端"hello, 客户端~" 目的: 对Netty线程模型 有一个初步认识, 便于理解Netty 模型理论 编写服务端 编写客户端 对Netty程序进行分析, 看看Netty模型特点 添加Netty依赖 <!-- https://mvnrepository.com/artifact/io.netty/netty-all -
彼岸舞
2022/02/18
5040
Netty In Action中国版 – 第二章:第一Netty程序
本章将简介Netty的核心概念,这个狠心概念就是学习Netty是怎样拦截和处理异常。对于刚開始学习netty的读者。利用netty的异常拦截机制来调试程序问题非常有帮助。本章还会介绍其它一些核心概念。如server和client的启动以及分离通道的处理程序。本章学习一些基础以便后面章节的深入学习。
全栈程序员站长
2022/07/06
4100
Netty In Action中国版 – 第二章:第一Netty程序
Netty(三)之数据之粘包拆包
客户端发送10个长度的字符串,因为设置了长度为5的定长解码器,所以服务器收到2条消息
CBeann
2023/12/25
1980
Netty(三)之数据之粘包拆包
Netty(一)之helloworld
客户端通向服务器端发送消息,服务器端读取数据(你好)并且返回(new Date()),客户端读取数据
CBeann
2023/12/25
1540
java架构之路-(netty专题)netty的基本使用和netty聊天室
  上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图。
小菜的不能再菜
2020/02/23
1.3K0
Netty之入门案例
  前面给大家介绍了NIO,我们会发现用NIO实现异步非阻塞的网络通信代码量非常大,而且并不是很好理解,在实际的开发中一般我们也都是会实现基于NIO的框架来操作的,比如Netty,这样开发效率有高而且Bug也少。
用户4919348
2019/04/18
5250
Netty之入门案例
10分钟快速入门Netty 比写NIO爽百倍
为了解决NIO 编码复杂,但是又想使用NIO,所以netty来了,netty 通过对nio复杂的api进行了封装,使得netty在具备高性能、高吞吐量、低延迟的前提下,还能方便开发人员进行快速开发。
AI码师
2022/12/22
2890
Netty入门(Netty4.x使用指南)
现如今,我们使用通用的应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从服务器上获取信息并通过web服务执行远程过程调用。但是,通用协议或它的实现有时并不能很好的伸缩。这就像我们不会使用通用HTTP服务器来交换大文件、电子邮件、还有像金融信息、游戏数据等实时信息。这些业务所需要的是高度优化实现协议,用于专门的目的。例如,您可能希望实现一个针对基于ajax的聊天应用程序、媒体流应用、大文件传输进行优化的http服务器。您甚至可能想要设计并实现一个完全符合您的需求的新协议。另一个不可避免的情况是,你不得不去处理一个遗留的专有协议,来保证和旧系统的互操作性。在这些情况下,重要的是在不牺牲最终应用程序的稳定性和性能的前提前,如何尽可能快的实现该协议。
小诸葛
2020/04/14
1.1K0
Netty的TCP粘包/拆包(源码二)
假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器端一次读取到的字节数是不确定的,所以可能发生四种情况:
用户3003813
2018/09/06
9040
Netty的TCP粘包/拆包(源码二)
Netty Review - 探索Pipeline的Inbound和Outbound
我们知道当boss线程监控到绑定端口上有accept事件,此时会为该socket连接实例化Pipeline,并将InboundHandler和OutboundHandler按序加载到Pipeline中,然后将该socket连接(也就是Channel对象)挂载到selector上。
小小工匠
2023/12/01
3140
Netty Review - 探索Pipeline的Inbound和Outbound
Netty第一个入门实例-TCP服务
好了netty的第一个入门案例就到此了,具体的代码解释请多看代码中的注释,有不清楚的欢迎留言交流 O(∩_∩)O哈哈~
用户4919348
2019/12/31
5K0
Netty Review - 核心组件扫盲
如果Handler处理器有一些长时间的业务处理,可以交给taskQueue异步处理。
小小工匠
2023/11/15
5110
Netty Review - 核心组件扫盲
Netty | 属于你的第一款Netty应用程序
我在这里偷懒了,直接是导入了netty-all,如果不想的话,大家可以用到什么导入什么,因为Netty支持的特别广,所以有不同的Jar包。
宁在春
2022/10/31
3200
Netty | 属于你的第一款Netty应用程序
Netty(1):第一个netty程序
为什么选择Netty   netty是业界最流行的NIO框架之一,它的健壮型,功能,性能,可定制性和可扩展性都是首屈一指的,Hadoop的RPC框架Avro就使用了netty作为底层的通信框架,此外netty在互联网,大数据,网络游戏,企业应用,电信软件等众多行业都得到了成功的商业应用。正因为以上的一些特性,使得netty已经成为java NIO编程的首选框架。 构建netty开发环境 其实使用netty很简单,直接将其jar包引入到工程中即可使用。 去 http://netty.io/网站上下载最新版本
SecondWorld
2018/03/14
1.2K0
Netty入门_合并财务报表应用指南
一个简单的NIO服务端程序,如果我们直接使用JDK的NIO类库进行开发,竟然需要经过繁琐的十多步操作才能完成最基本的消息读取和发送,这也是我们选择Netty框架的原因了。下面我们看看Netty是如何轻松搞定服务端开发的。
全栈程序员站长
2022/11/09
3550
Netty Review - Netty自动重连机制揭秘:原理与最佳实践
Netty Review - 深入探讨Netty的心跳检测机制:原理、实战、IdleStateHandler源码分析
小小工匠
2023/12/25
1.4K0
Netty Review - Netty自动重连机制揭秘:原理与最佳实践
18-Netty 编解码器和Handler的调用机制
基本说明 Netty的组件设计: Netty的主要组件有Channel, EventLoop, ChannelFuture, ChannelHandler, ChannelPipeline等 ChannelHandler充当了处理入站和出站数据的应用程序逻辑的容器, 例如: 实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter), 你就可以接收入站事件和数据, 这些数据会被业务逻辑处理, 当要给客户端发送响应时, 也可以从ChannelInbound
彼岸舞
2022/02/18
1.2K0
18-Netty 编解码器和Handler的调用机制
相关推荐
【Java】Netty创建网络服务端客户端(TCP/UDP)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验