gpt4 book ai didi

java - 为什么我的客户端 Socket 无法连接到我的 ServerSocket?

转载 作者:行者123 更新时间:2023-11-30 07:49:29 24 4
gpt4 key购买 nike

在这个极其基本的客户端/服务器套接字程序中,为什么我的客户端套接字永远不会连接并抛出java.net.ConnectException?我在一台计算机上运行 MessageServer 程序,在同一网络上的另一台笔记本电脑上运行 ClientServer 程序。我已经使用该计算机上的 Windows cmd 中的 ipconfig 命令验证了运行服务器程序的计算机的本地 IP 为 10.0.0.1。

服务器:

package server;

import java.net.*;
import java.io.*;

public class MessageServer {

public static void main(String args[]) {
ServerSocket serverSocket = null;

try {
serverSocket = new ServerSocket(4302);
}
catch (Exception e) {
System.out.println("well bad news...");
}

boolean noConnection = true;
while(noConnection == true) {
try {
Socket client = serverSocket.accept();
System.out.println("socket connection accepted:" + client.getRemoteSocketAddress().toString());
noConnection = false;

} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("fail");
}

}
}
}

客户:

import java.net.*;
import java.io.*;

public class MessageClient {
public static void main(String args[]) {
Socket clientSocket = null;
String recieve;
try {
clientSocket = new Socket("10.0.0.1", 4302);
} catch (Exception e) {
System.out.println("deal with it...");
e.printStackTrace();
}


}
}

当我运行这两个程序时,我在客户端计算机上得到以下结果:

java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at MessageClient.main(MessageClient.java:10)

服务器计算机上没有问题。

编辑:我尝试禁用我的互联网安全(诺顿 360),但没有帮助。另外,我正在(两台计算机上)运行 Windows 10、Java 8 Update 65、Eclipse IDE Mars 1

编辑2:如果有帮助的话,我尝试在一台计算机上运行程序的两个部分,这有效。所有迹象都表明 Windows 防火墙存在问题。我会尽力尽快解决这个问题。

最佳答案

好吧,我终于解决了这个问题。只是为遇到同样问题的人提供这个答案。创建客户端套接字时,您也需要直接指定其连接的机器的本地 ipv4。由于某种原因,本地主机不允许它连接,并表示 LAN 连接拒绝连接。所以 EX 代码:

Socket client = new Socket("10.0.0.8", 5566); 

而不是:

Socket client = new Socket("localhost" 5566);

如果您正在寻找 ipv4,请进入服务器计算机,打开 CMD(Windows),然后输入 ipconfig。然后在以太网适配器本地连接:下使用 IPv4 地址下列出的地址。

关于java - 为什么我的客户端 Socket 无法连接到我的 ServerSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com