Java:what';s服务器的IP地址,以便连接两台不同的计算机
我在java上设计了一个小型多人游戏,并使用本地主机ip“127.0.0.1”成功测试了它,但现在我想在两台不同的计算机上测试它,这两台计算机都连接到Wifi网络 问题是我不知道客户端需要使用哪个ip地址连接到服务器。我使用了IPv4地址(在cmd ipconfig中),但它们似乎没有连接 客户:Java:what';s服务器的IP地址,以便连接两台不同的计算机,java,sockets,server,client,Java,Sockets,Server,Client,我在java上设计了一个小型多人游戏,并使用本地主机ip“127.0.0.1”成功测试了它,但现在我想在两台不同的计算机上测试它,这两台计算机都连接到Wifi网络 问题是我不知道客户端需要使用哪个ip地址连接到服务器。我使用了IPv4地址(在cmd ipconfig中),但它们似乎没有连接 客户: public class Client { Socket client; ObjectOutputStream oos; ObjectInputStream ois;
public class Client {
Socket client;
ObjectOutputStream oos;
ObjectInputStream ois;
public Client(String gameServer) {
try {
client = new Socket(InetAddress.getByName(gameServer),8888);
oos = new ObjectOutputStream(client.getOutputStream());
ois = new ObjectInputStream(client.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
服务器:
public class Server {
ServerSocket ss = null;
Socket server;
ObjectOutputStream oos;
ObjectInputStream ois;
public Server() {
try {
ss = new ServerSocket(8888, 10, InetAddress.getByName("0.0.0.0"));
server = ss.accept();
System.out.println("----->" + server.getInetAddress().getHostName());
System.out.println("Successful connection");
oos = new ObjectOutputStream(server.getOutputStream());
ois = new ObjectInputStream(server.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
基本上,我不知道输入什么作为客户端类的构造函数来连接这两台计算机。您写道,通常软件在本地计算机上运行得很好。因此,问题在于网络连接,而不是软件应用程序 如果您在一个相同的网络中(例如,一间屋子里有两台计算机),请检查端口是否打开。如果您在同一个网络中,您应该使用本地ip地址。只需对linux使用sudoifconfig命令,对windows使用ipconfig命令即可 在linux上您可以使用nmap或telnet检查端口是否打开:
nmap [local ip] -p [port]
在windows上您可以使用telnet进行测试
telnet [local ip] [port]
如果你在不同的网络中(例如你和你的朋友在不同的房子里),你不能使用本地IP地址。您应该通过路由器进行端口转发,以查找本地机器。当然,在这种情况下,您应该使用全局IP地址。问题是由于防火墙处于打开状态。关闭后,一切正常。在服务器套接字中,尝试将IP地址更改为
ipconfig
给定的本地地址,例如192.168.179.5
并使用客户端访问此地址…@0x1C1B我在以太网适配器VMware网络适配器VMnet8(在ipconfig中)中使用了IPv4地址但是还是不起作用。等一下,您的服务器正在VM中的同一台机器上运行,而客户端正在真实的机器上运行?我想问题在于虚拟机配置……nmap对于这项任务来说是一种过度的杀伤力,它更容易,而且可能已经安装在SO netcat:nc-zv主机名端口上了