确定我将一个java程序从一个java程序发送到另一个程序(在同一台计算机上)。 但是,有时我会得到一个例外,它不会连接:
线程“main”中的异常java.net.ConnectException:连接被拒绝:连接 at java.net.PlainSocketImpl.socketConnect(Native Method) 在java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 在java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 在java.net.Socket.connect(Socket.java:529) 在java.net.Socket.connect(Socket.java:478) 在java.net.Socket。(Socket.java:375) 在java.net.Socket。(Socket.java:189) 在Client.main(Client.java:6)
以下是发送代码:
Socket socket = new Socket("localhost" , 8080);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeInt(5);
socket.close();
和接收:
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
DataInputStream din = new DataInputStream(socket.getInputStream());
System.out.println(din.readInt());
socket.close();
这很奇怪,因为有时它会起作用,有时候不行。有没有人有任何想法?
答案 0 :(得分:1)
引自the description of the exception:
“表示尝试将套接字连接到远程地址和端口时发生错误。通常,远程拒绝连接(例如,没有进程正在侦听远程地址/端口)。”
最有可能的是没有人在听这个端口。您的服务器代码似乎接受一个连接然后关闭,因此除非您为每个连接重新启动服务器,否则这是您最可能的原因。如果没有,请检查您的服务器应用程序是否正在运行。
答案 1 :(得分:1)
如果你:
,我打赌你会收到这个错误您的服务器只接受一个连接,然后终止。
如果您想接受无限数量的顺序连接,请使用如下循环来包围您的服务器代码:
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket socket = serverSocket.accept();
DataInputStream din = new DataInputStream(socket.getInputStream());
System.out.println(din.readInt());
socket.close();
}
在为请求提供服务后,它将再次收听另一个请求或等待请求。