質問

ソケットを作成して取得します 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への応答を送信して指定されたポート番号を送信するため、それは起こり得ません。この問題を修正するにはどうすればよいですか?私はどこで間違っていて、何?

役に立ちましたか?

解決

「接続が拒否された」エラーは、サーバーマシンのソケットスタックが接続要求を受信し、意図的に受け入れることを拒否したことを意味します。それは2つの可能な理由のいずれかで起こります:

1)接続しようとしているポートで実行されているリスニングソケットはありません。

2)リスニングソケットがありますが、保留中の接続のバックログはいっぱいであるため、その瞬間にリクエストをキューする余地はありません。

2つを区別するには、各試行の間に遅延して数回再接続してみてください。一貫して同じエラーが発生した場合、#1が犯人である可能性があります。ポート番号が正しいことを確認してください。 #2が犯人の場合、再接続は最終的に成功する可能性があります。

他のヒント

接続が拒否され、そのポートで聞いていないサーバーに接続しようとするか、接続を受け入れるにはバックログが大きすぎることを意味します。

これをテストする簡単な方法は、試すことです

 telnet 111.111.111.111 4040
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top