远程服务器上的SocketException

时间:2011-09-13 09:30:48

标签: java network-programming

尝试连接远程服务器时遇到问题。

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);

在localhost上一切正常。

3 个答案:

答案 0 :(得分:1)

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

  

这有时会发生在其他平台上 - 偶尔使用它       发生在早期版本的Mac OS X上。解决方案肯定存在       因为MD要求(通过Java)打开一个,所以在Moneydance之外       标准网络连接和系统说它无法这样做。

     

我找到的唯一解决方案是重新启动计算机。       如果您还在运行使用大量网络的其他软件       资源,尝试不运行一段时间,看看它是否成功       差。

答案 1 :(得分:0)

删除bind()调用。这不是必需的。

答案 2 :(得分:0)

尝试使用

运行程序
-Djava.net.preferIPv4Stack=true

连接到远程系统时。