2011-09-13 12 views
1

リモートサーバーに接続しようとすると問題が発生します。ここでリモートサーバー上のSocketException

SocketException: Invalid argument or cannot assign requested address 
    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) 

は私が

if (socket == null) { 
     socket = new Socket(); 

    try { 
     socket.setReuseAddress(true); 
     socket.setTcpNoDelay(true); 
    } catch (SocketException ex) { 
    } 
    } 
    dstAddress = new InetSocketAddress(server, dstPort); 
    srcAddress = new InetSocketAddress("localhost", srcPort); 
    socket.bind(srcAddress); 
    socket.connect(dstAddress); 

すべてがローカルホスト上で正常に動作したソケットを作成する方法です。

+0

'dstPort'の値は何ですか? – Mat

+0

宛先ポートは5011 – LionO

答えて

1

http://comments.gmane.org/gmane.comp.finance.moneydance.general/5389

この時には、他のプラットフォーム上で発生 - それは時折 MDが開くように(Javaの経由)要求しているので、解決策は間違いなくMoneydanceの 外にあるマックOS Xの以前のバージョンで発生するために使用a 標準のネットワーク接続であり、システムはそうすることができないと言っています。

私がこれで見つけた唯一の解決策は、コンピュータを再起動することです。 多くのネットワーク リソースを使用する他のソフトウェアも実行している場合は、それをしばらく実行しないと、 の違いがあるかどうかを確認してください。

0

bind()呼び出しを削除します。必須ではありません。

+0

ですが、必須ではありませんが、クライアントマシンのポートを指定する必要があります。しかし、それを効果的に削除すれば、リモートサーバー上で動作します。例外を引き起こすのはバインドです。どうして ?バインドコールではどうすればいいですか? – LionO

0

は、リモートシステムへの接続時に

-Djava.net.preferIPv4Stack=true 

を使用してプログラムを実行してみてください。

関連する問題