Chr*_*lan 6 java sockets windows
如果使用端口0而不是非零端口创建TCP客户端套接字,则操作系统会为您选择任何空闲的临时端口.大多数操作系统从IANA动态端口范围 49152-65535中选择短暂端口.但是,在Windows Server 2003及更早版本(包括XP)中,根据其bind()文档,Microsoft使用端口1025-5000作为临时范围.
我在同一硬件上运行多个Java服务.在极少数情况下,此范围与我用于其他服务的众所周知的端口(例如,端口4160用于Jini发现)相冲突.虽然很少见,但却造成了实际问题.有没有简单的方法告诉Windows或Java为客户端套接字使用不同的端口范围?微软的文档表明我可以通过MaxUserPort TcpIP注册表设置更改该范围的高端,但我认为没有办法改变低端.
更新:我在这方面取得了一些进展.看起来微软有一个保留端口的概念,它是短暂端口范围的例外.有一个注册表设置,允许你永久地更改它,显然必须有一个API来做同样的事情,因为有一个数据结构保存保留端口范围的高/低值,但我无法在任何地方找到实际的函数调用. ..注册表解决方案可能有效,但现在我已经注意到了这个API.
Update2:我在ServerFault上接受了一个解决方案,了解如何通过Windows注册表执行此操作.我仍然想通过API来做到这一点,但我想我现在很满意.
归档时间: |
|
查看次数: |
5438 次 |
最近记录: |