0 0

socket 本地随机端口占用问题0

场景:
同一台服务器上,有A, B 两个应用
B应用启动的时候会监听8081端口
A使用 HttpClient 4 请求8081 端口向B发送请求并接收返回值。

先启动B 再启动A, 运行一切正常。

先启动A,再启动B,  当A启动的时候,会不停的调用8081, 这时启动B显示8081端口被占用

linux下使用 lsof 命令查看,   A应用自己开了一个8081端口,并且自己在请求自己。 

这个问题比较怪, 我查了HttpClient 4的源码, socket 使用bind绑定本地端口, 端口设置的0, 默认是随机,  底层是native,直接调的操作系统开的随机端口。

这个有人遇到过吗,怎么解决端口占用问题
  
  
2014年7月29日 10:57

4个答案 按时间排序 按投票排序

0 0


1.按理说 A 不会启动一个8081的端口而且自己调用自己
2.按你目前情况,可以尝试让 A 不用随机端口,明确指定一个端口给它

2014年7月29日 19:36
0 0

   
我遇到过相似的问题。
我的解决办法是:打sockserver的时候使用0,让系统随机分配一个端口【这样不会冲突也可以启动多个,不必写死总需要改】,打开sockserver后会得到现在打开的端口,通过文件告诉另个程序端口号。

--------------------------------------
针对你的程序。
A中可以添加一个监测交互文件(sockNumberFile)的Task,发现这个文件读里面的端口号连接。
B中打开sockserver的时候参数用0,打开端口后得到端口号写入交互文件(sockNumberFile)。

这样端口号不会冲突。
随便先启动A还是B。
可以启动多个A-B对。

2014年7月29日 16:05
0 0

A怎么会启动一个8081的端口而且自己调用自己呢?

2014年7月29日 13:36
0 0

改端口不就行了

2014年7月29日 11:11

相关推荐

    c#检测某个端口是否被占用

    如果连接成功,那么端口被占用;如果连接失败,比如抛出SocketException异常,那么端口可能未被占用或服务未启动。 以下是一个简单的示例代码: ```csharp using System; using System.Net; using System.Net....

    linux下socket编程

    - **自动获取地址**:在使用`bind`函数时,可以通过特定的赋值方式来自动获取本机IP地址和随机获取一个未被占用的端口号。 #### 五、Socket通信流程 1. **创建Socket**:使用`socket()`函数创建Socket描述符。 2. ...

    Spring boot随机端口你都不会还怎么动态扩容

    使用${random}生成随机端口可以解决端口冲突的问题,但是它并不能确保生成的端口号没有被占用。为了解决这个问题,我们可以使用检测机制来检查生成的端口号是否已经被占用。 我们可以通过建立socket连接来检测端口...

    安卓手机socket通信(服务端和客户端)

    这个端口号必须是未被占用的,通常选择一个大于1024的随机端口。 ```java ServerSocket serverSocket = new ServerSocket(8888); ``` 2. 接收连接: 使用`accept()`方法等待客户端的连接请求。此方法会阻塞直到有...

    Linux环境下的Socket编程

    以下是一个简单的示例,演示如何自动获得本机IP地址并随机获取一个未被占用的端口号: ```c struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; // 设置地址族 my_addr.sin_port = 0; // 自动分配端口号 /...

    socket通讯,实现客户端想服务器发送指令

    这个端口号必须是未被其他程序占用的,通常选择大于1024的随机端口。例如: ```java ServerSocket serverSocket = new ServerSocket(8080); ``` 2. **接受客户端连接** 服务器通过`serverSocket.accept()`方法...

    随机匿名聊天软件RandomChat v1.0.0

    随机匿名聊天软件...使用方法:基于nodejs和socket.io,在应用根目录下运行即可,http服务是3000端口,https是3011端口$ npm install$ node .默认访问地址`https3011`.由于安全机制限制,需要生成自己的Ca证书。

    Socket简单模拟

    在MyServer.java中,首先会创建一个ServerSocket实例,指定一个端口号(通常是大于1024的随机未被占用的端口)。然后通过调用ServerSocket的accept()方法进入监听状态,等待客户端的连接。当有客户端发起连接请求时...

    socket的java聊天软件

    在聊天软件中,服务器的IP地址需要设置为服务器的实际IP,端口号则是预先约定或者随机分配的未被占用的端口。 6. **异常处理**: 网络通信中,由于各种原因可能会出现异常,如连接失败、数据传输错误等。因此,...

    从Linux源码分析bind系统调用.docx

    `inet_csk_get_port`函数负责端口的选取,当bind端口为0时,它会遍历端口范围,找到一个未被占用的端口号进行绑定。这个过程可能涉及到一些随机策略,以防止端口冲突。 总的来说,bind系统调用在Linux网络编程中是...

    Bug:Address already in use: JVM_Bind问题之总结

    这个错误通常发生在尝试绑定一个已经被占用的网络端口时。本文将深入探讨这个问题,提供解决方案,并从源码角度解析其原因。 首先,"JVM_Bind"错误是Java虚拟机(JVM)在尝试启动服务器或者网络服务时,遇到端口已...

    VC端口扫描程序*******

    2. 隐藏身份:设置随机源端口和IP头选项,降低被识别为扫描的风险。 3. 耐久性:处理网络延迟和丢包,确保扫描的准确性。 4. 法律法规:注意遵循网络安全法规,避免非法扫描行为。 五、duankoushaomiao文件分析 ...

    Android 中出现java.net.BindException: bind failed: EADDRINUSE 问题解决办法

    1. **检查端口是否被占用**:首先,确保你的应用没有多个实例同时运行,或者应用中没有其他地方也在使用同一个端口。此外,也可以通过命令行工具(如`netstat`)检查端口状态,确认是否有其他进程占用。 2. **随机...

    用Winsock实现聊天的程序

    - **配置Winsock控件**:设置本地端口,一般选择未被占用的随机端口;设置远程主机和端口,根据聊天服务器的地址和端口进行设置。 - **连接服务器**:在VB代码中,调用Winsock控件的Connect方法与服务器建立连接。...

    安卓APP soket 服务端DEMO

    这个端口号必须是未被其他服务占用的,通常我们选择一个大于1024的随机端口。 - 使用`ServerSocket`的`bind()`方法将服务绑定到特定的IP地址和端口上,然后通过`listen()`方法启动监听,等待客户端的连接请求。 2....

    Java Netty异常分析BindException.pdf

    - 当一个网络端口被占用时,最常见的原因是另一个应用程序或服务正在使用它。 - 检查是否有其他进程正在监听相同的端口,例如使用`netstat -ano | findstr :8345`命令来查找正在使用指定端口的进程。 2. **配置...

    演示ClientSocket反复连接进程句柄数不变

    当客户端试图连接到未启动的服务,它会进入等待状态,每个未完成的连接尝试都会占用一个句柄。如果不加以控制,句柄数会不断增长,直到达到系统的句柄限制,从而导致性能下降,甚至可能使整个系统崩溃,也就是所谓的...

    关闭ServerSocket

    这种情况下,例如`RandomPort`程序,每次运行可能得到不同的监听端口,这是因为每次运行时,操作系统都会随机选择一个未使用的端口。 FTP(文件传输协议)是利用`ServerSocket`的一个典型例子。FTP使用TCP的两个...

Global site tag (gtag.js) - Google Analytics