Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 Can';无法将IP地址解析为主机名_Java_Android_Multithreading_Sockets_Client Server - Fatal编程技术网

Java Can';无法将IP地址解析为主机名

Java Can';无法将IP地址解析为主机名,java,android,multithreading,sockets,client-server,Java,Android,Multithreading,Sockets,Client Server,我最初是通过Java main方法为Android应用程序运行服务器,但由于Android Studio的原因,我不得不通过Android main活动来运行服务器。在尝试从主活动运行它时,我遇到了绑定到指定端口的问题。当我尝试与我的客户机连接时(我知道可以正常工作),它返回连接被拒绝的错误,这向我表明我的服务器实际上没有在指定的端口上侦听。这是我的服务器和主要活动。我相信我的语法在设置这一切时一定有一些小问题 public class Server extends Thread { Serve

我最初是通过Java main方法为Android应用程序运行服务器,但由于Android Studio的原因,我不得不通过Android main活动来运行服务器。在尝试从主活动运行它时,我遇到了绑定到指定端口的问题。当我尝试与我的客户机连接时(我知道可以正常工作),它返回连接被拒绝的错误,这向我表明我的服务器实际上没有在指定的端口上侦听。这是我的服务器和主要活动。我相信我的语法在设置这一切时一定有一些小问题

public class Server extends Thread {
ServerSocket serverSocket = null;
final Reactor reactor = new Reactor();
int port;
boolean running;

Server(int p) throws  IOException {
    running = true;
    port = p;
}


@Override
public void run() {
    try {
        serverSocket = new ServerSocket(port);
    } catch (IOException e) {
        e.printStackTrace();
    }
    while (running == true) {

        try {

            System.out.println("Connecting");
            System.out.println("Server running on port: " + port);

            Socket listener = serverSocket.accept();


        } catch (IOException e) {
            e.printStackTrace();
            running = false;
        }
    }
}
}
这里是我的mainActivity,它只是启动在指定端口上侦听的服务器线程

public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Server server = null;
    try {
        server = new Server(4600);
    } catch (IOException e) {
        e.printStackTrace();
    }
    server.start();

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}
这是来自客户端的堆栈跟踪

  02-14 17:42:56.109    1314-1364/edu.carleton.l8client W/System.err﹕    j       java.net.UnknownHostException: Unable to resolve host "172.17.201.280": No address associated with hostname
 02-14 17:42:56.109    1314-1364/edu.carleton.l8client W/System.err﹕ at     java.net.InetAddress.lookupHostByName(InetAddress.java:424)
 02-14 17:42:56.117    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
 02-14 17:42:56.117    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.InetAddress.getAllByName(InetAddress.java:214)
02-14 17:42:56.117    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.Socket.tryAllAddresses(Socket.java:108)
 02-14 17:42:56.117    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.Socket.<init>(Socket.java:177)
 02-14 17:42:56.127    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.Socket.<init>(Socket.java:149)
  02-14 17:42:56.127    1314-1364/edu.carleton.l8client W/System.err﹕ at edu.carleton.l8client.Client.run(Client.java:99)
  02-14 17:42:56.127    1314-1364/edu.carleton.l8client W/System.err﹕ Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
  02-14 17:42:56.137    1314-1364/edu.carleton.l8client W/System.err﹕ at libcore.io.Posix.getaddrinfo(Native Method)
  02-14 17:42:56.137    1314-1364/edu.carleton.l8client W/System.err﹕ at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
   02-14 17:42:56.147    1314-1364/edu.carleton.l8client W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
02-14 17:42:56.109 1314-1364/edu.carleton.l8客户端W/System.err﹕    j java.net.UnknownHostException:无法解析主机“172.17.201.280”:没有与主机名关联的地址
02-14 17:42:56.109 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.InetAddress.lookupHostByName(InetAddress.java:424)
02-14 17:42:56.117 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
02-14 17:42:56.117 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.InetAddress.getAllByName(InetAddress.java:214)
02-14 17:42:56.117 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.Socket.tryalladdress(Socket.java:108)
02-14 17:42:56.117 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.Socket(Socket.java:177)
02-14 17:42:56.127 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.Socket(Socket.java:149)
02-14 17:42:56.127 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于edu.carleton.l8client.Client.run(Client.java:99)
02-14 17:42:56.127 1314-1364/edu.carleton.l8客户端W/System.err﹕ 原因:libcore.io.GaiException:getaddrinfo失败:EAI_NODATA(没有与主机名关联的地址)
02-14 17:42:56.137 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于libcore.io.Posix.getaddrinfo(本机方法)
02-14 17:42:56.137 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
02-14 17:42:56.147 1314-1364/edu.carleton.l8客户端W/System.err﹕ 位于java.net.InetAddress.lookupHostByName(InetAddress.java:405)

172.17.201.280不是有效的IP地址,因此它将其解释为主机名

尝试0.0.0.0-255.255.255.255范围内的内容


(280大于255)

能否提供抛出的堆栈跟踪。您是否在同一网络中运行服务器和客户端?IP是否正确?端口不是问题。是的,端口是正确的,IP地址也是正确的。我已经运行过很多次了,我知道通常当这个错误弹出时,你会为Android应用程序设置正确的权限吗?我没有你的第二次许可,所以我会加上。我还想从我的计算机或服务器的虚拟设备使用IP地址吗?IP地址可以。我已经在从main()运行的服务器上测试了我的客户机,它运行良好。。只是上面从主活动运行的服务器不工作引号:无法解析不是有效IP地址的主机“172.17.201.280”。这就是为什么他说无法解析主机。现在你必须找出它的来源。