簡體   English   中英

無法創建套接字:java.net.ConnectException:連接被拒絕:連接

[英]Unable to Create a Socket :java.net.ConnectException: Connection refused: connect

我將創建一個套接字並獲取一個InputStream 這是我嘗試的方式。

try {
    final String serverIP = "111.111.111.111";
    final int serverPort = Integer.parseInt(server_port);
    final InetAddress serverAd=InetAddress.getByName(serverIP);
    final InetAddress localAd =InetAddress.getByName(local_ip);  
    final int localPort = 4040;

    Socket socket = new Socket(serverAd, serverPort, localAd, localPort);  
}  

但是有一個例外,

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:276)
    at shootist.Porter.run(Porter.java:41)

這里服務器發給我rtp數據,服務器端正常並確認。 我發了邀請,也得到了200。 如果我的IP和端口出現問題,我認為,所有響應都無法傳送到我的IP和給定的端口。 但是,當服務器向我發送對我的IP和給定端口號的響應時,它不會發生。 我該如何解決這個問題? 我哪里錯了什么?

“連接被拒絕”錯誤意味着服務器計算機上的套接字堆棧收到了您的連接請求,並故意拒絕接受它。 出現這種情況的原因有以下兩種:

1)您嘗試連接的端口上沒有運行偵聽套接字。

2)有一個偵聽套接字,但其待處理連接的積壓已滿,因此此時無法為您的請求排隊。

要區分這兩者,請嘗試重新連接幾次,每次嘗試之間有延遲。 如果你始終得到相同的錯誤,那么#1可能是罪魁禍首。 確保端口號正確無誤。 如果#2是罪魁禍首,那么你的重新連接最終有可能取得成功。

拒絕連接意味着您嘗試連接到未在該端口上偵聽的服務器,或者過於積壓以接受連接。

測試這個的簡單方法是嘗試

 telnet 111.111.111.111 4040

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM