Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.ConnectException:调用SocketChannel.open时连接被拒绝_Java_Sockets_Nio - Fatal编程技术网

java.net.ConnectException:调用SocketChannel.open时连接被拒绝

java.net.ConnectException:调用SocketChannel.open时连接被拒绝,java,sockets,nio,Java,Sockets,Nio,我试图写一个简单的程序来打开一个本地地址的套接字通道。每当运行此程序时,我都会收到一个连接被拒绝异常 import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.channels.SocketChannel; public class testSocket { public static void main(String [] args) { t

我试图写一个简单的程序来打开一个本地地址的套接字通道。每当运行此程序时,我都会收到一个连接被拒绝异常

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;

public class testSocket {

        public static void main(String [] args) {
                try {
                        InetAddress addr = InetAddress.getByName("localhost");
                        InetSocketAddress remoteAddress = new InetSocketAddress(addr, 19015);

                        // Open a new Socket channel and set it to non-blocking
                        SocketChannel socketChannel = SocketChannel.open();
                        socketChannel.configureBlocking(false);

                        // Issue the Connect call on the remote address.
                        socketChannel.connect(remoteAddress);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}
我得到的例外是

java.net.ConnectException: Connection refused
        at sun.nio.ch.Net.connect(Native Method)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
        at testSocket.main(testSocket.java:17)
我在Sun Solaris和HP-UX中遇到了这个问题。它似乎在Linux机器上运行良好。有人能告诉我为什么拒绝连接吗?我做了一个netstat-a并确认该端口未被使用


提前谢谢

当指定端口(19015)上没有进程侦听时,您将收到“连接被拒绝”消息。看起来您正在尝试连接到不存在的服务。netstat甚至告诉您该端口未被使用

当指定端口(19015)上没有进程侦听时,您将收到“连接被拒绝”消息。看起来您正在尝试连接到不存在的服务。netstat甚至告诉您该端口未被使用

来自Javadoc for SocketChannel.connect()

如果此通道处于非阻塞模式,则调用此方法将启动非阻塞连接操作。如果立即建立连接,就像本地连接一样,则此方法返回true。否则,此方法返回false,并且连接操作必须稍后通过调用finishConnect方法完成

当我在Linux上运行代码时,connect()返回false,因此没有异常。如果添加对socketChannel.finishConnect()的调用,您将看到与在Solaris/HP-UX上相同的连接被拒绝异常


我怀疑在Solaris上/HP-UX connect()返回true,因此会立即引发异常。

来自Javadoc for SocketChannel.connect()

如果此通道处于非阻塞模式,则调用此方法将启动非阻塞连接操作。如果立即建立连接,就像本地连接一样,则此方法返回true。否则,此方法返回false,并且连接操作必须稍后通过调用finishConnect方法完成

当我在Linux上运行代码时,connect()返回false,因此没有异常。如果添加对socketChannel.finishConnect()的调用,您将看到与在Solaris/HP-UX上相同的连接被拒绝异常

我怀疑在Solaris/HP-UX connect()上返回true,因此会立即引发异常