Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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

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 无法打开套接字服务器_Java_Sockets - Fatal编程技术网

Java 无法打开套接字服务器

Java 无法打开套接字服务器,java,sockets,Java,Sockets,我正在尝试建立一个简单的客户端和服务器连接。但是,服务器似乎没有适当地绑定到端口 我为服务器使用的代码如下所示: class Server extends Thread { public boolean running = true; public Server(Main main) throws IOException { super(); ServerSocket server_sock = new ServerSocket(8123

我正在尝试建立一个简单的客户端和服务器连接。但是,服务器似乎没有适当地绑定到端口

我为服务器使用的代码如下所示:

class Server extends Thread
{
    public boolean running = true;

    public Server(Main main) throws IOException
    {
        super();
        ServerSocket server_sock = new ServerSocket(8123);

        while (running)
        {
            new Connector(server_sock.accept(), main);
        }
        server_sock.close();
    }
}

class Connector extends Thread
{
    public Connector(Socket c)
    {
        super();
        system.out.println("Connecting"+c.getRemoteSocketAddress()+":"+c.getLocalPort());
        c.setKeepAlive(true);
        //wait for the connection to end
        system.out.println("Disconnecting"+c.getRemoteSocketAddress()+":"+c.getLocalPort());
    }
}
客户机相当简单,我只想连接到服务器(下面显示的行是通过其主程序中的另一个程序运行的):

发生的情况:服务器运行并且不抛出任何异常。我运行了一个客户端,它在线程“main”java.net中抛出了一个异常
异常。ConnectException:连接被拒绝:connect

因此,我制作了一个简单的python客户机和服务器对来检查Java服务器/客户机:

服务器:

客户:

我用python客户机测试了python服务器,作为一个健全性测试,效果很好。我用java客户机测试了python服务器,它们都配合得很好。但是,python客户端和java系列不起作用。My python服务器提供了以下错误:

Traceback (most recent call last):
  File "C:\Users\SIGABRT\Desktop\tcp.py", line 4, in <module>
    s.connect(('localhost', 8123))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
回溯(最近一次呼叫最后一次):
文件“C:\Users\SIGABRT\Desktop\tcp.py”,第4行,在
s、 连接(('localhost',8123))
ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它

这通常意味着服务器未正确启动。那么,Java服务器客户端有什么问题呢?

我也有同样的问题。对我来说,这样做很有帮助

s = new Socket("localhost", 8123);
我想知道为什么它不能与IP一起工作

解释 至少在我的Ubuntu系统上,似乎
新服务器套接字(端口)
设置了与IPv6的连接-“127.0.0.1”是IPv4,无法连接到正在设置的套接字。另一种方法是使用初始化服务器套接字

new ServerSocket(port, 32, Inet4Address.getByName("127.0.0.1"));

我不知道在通过环回地址使用时,在IPv6上使用IPv4是否会产生真正的差异(性能方面)。

附带说明。。。您计算机上的用户配置文件名是SIGABRT?非常好。@shotgunnija是的D
Traceback (most recent call last):
  File "C:\Users\SIGABRT\Desktop\tcp.py", line 4, in <module>
    s.connect(('localhost', 8123))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
s = new Socket("localhost", 8123);
new ServerSocket(port, 32, Inet4Address.getByName("127.0.0.1"));