Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:what';s服务器的IP地址,以便连接两台不同的计算机_Java_Sockets_Server_Client - Fatal编程技术网

Java:what';s服务器的IP地址,以便连接两台不同的计算机

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;

我在java上设计了一个小型多人游戏,并使用本地主机ip“127.0.0.1”成功测试了它,但现在我想在两台不同的计算机上测试它,这两台计算机都连接到Wifi网络

问题是我不知道客户端需要使用哪个ip地址连接到服务器。我使用了IPv4地址(在cmd ipconfig中),但它们似乎没有连接

客户:

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主机名端口上了