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