我正在尝试建立一个简单的客户端和服务器连接。但是,服务器似乎没有适当地绑定到端口。
我用于服务器的代码如下所示:
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());
}
}
客户端很简单,我只想连接到服务器(下面显示的行是通过其主程序中的另一个程序运行的):
s = new Socket("127.0.0.1", 8123); // Start
s.close(); // Stop
会发生什么:服务器运行并且不抛出任何异常。希望我在抛出异常的地方运行客户端Exception in thread "main" java.net.ConnectException: Connection refused: connect
。
所以我做了一个简单的python客户端和服务器对来检查Java服务器/客户端:
服务器:
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', 8123))
s.listen(1)
conn, addr = s.accept()
print("CONNECTED: ", addr)
conn.close()
客户:
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 8123))
s.close()
我用 python 客户端测试了 python 服务器作为健全性测试,效果很好。我用java客户端测试了python服务器,他们都合作得很好。但是,python 客户端和 java 系列都不起作用。我的 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
这通常意味着服务器未正确启动。那么我在使用 Java 服务器客户端时做错了什么?