Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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-socket编程_Java_Multithreading_Sockets - Fatal编程技术网

Java-socket编程

Java-socket编程,java,multithreading,sockets,Java,Multithreading,Sockets,我所阅读和观看的所有关于java套接字编程的教程都涉及一个常见的、基本的单词,即localhost。我玩java服务器客户端程序已经有一段时间了,做了一些实验。但每次,我的计算机既是服务器又是客户机,所以当涉及到其他试图连接到我计算机上托管的服务器的计算机时,我不太明白如何使事情正常工作 以以下基本服务器客户端类为例: 服务器类 public class TestServerSocket { public static void main(String args[]) throws I

我所阅读和观看的所有关于java套接字编程的教程都涉及一个常见的、基本的单词,即localhost。我玩java服务器客户端程序已经有一段时间了,做了一些实验。但每次,我的计算机既是服务器又是客户机,所以当涉及到其他试图连接到我计算机上托管的服务器的计算机时,我不太明白如何使事情正常工作

以以下基本服务器客户端类为例:

服务器类

public class TestServerSocket {

    public static void main(String args[]) throws IOException {
        final int portNumber = 444;
        System.out.println("Creating server socket on port " + portNumber);
        ServerSocket serverSocket = new ServerSocket(portNumber);

        while (true) {
            Socket socket = serverSocket.accept();
            OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os, true);
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

             //...code...
       }
            socket.close();
            pw.close();
            os.close();
            br.close();
    }
}
客户端类

public class TestClientSocket {

    public static void main(String args[]) throws IOException {
        final String host = "localhost";
        final int portNumber = 444;
        System.out.println("Creating socket to '" + host + "' on port " + portNumber);

        while (true) {
            Socket socket = new Socket(host, portNumber);
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));

            //...code...

        }
            socket.close();
            out.close();
            br.close();
            userInputBR.close();
     }
}
现在,假设我想在我的计算机上运行TestServerSocket,让我的朋友在他的计算机上运行TestClientSocket。要使该代码正常工作,必须对此代码进行哪些更改?

“localhost”本质上是环回IP地址127.0.0.1的别名

为了让您的朋友连接到您的服务器,代码必须将服务器的IP地址替换为“localhost”

重要的是要注意,如果您的朋友不在您的本地网络上,您将不得不使用您的出站IP地址和端口转发路由器上的正确端口。不过,如果您不熟悉这种类型的网络,我不会尝试。如果你不小心,即使你很小心,你也可能会受到无数基于网络的攻击。

“localhost”本质上是环回IP地址127.0.0.1的别名

为了让您的朋友连接到您的服务器,代码必须将服务器的IP地址替换为“localhost”


重要的是要注意,如果您的朋友不在您的本地网络上,您将不得不使用您的出站IP地址和端口转发路由器上的正确端口。不过,如果您不熟悉这种类型的网络,我不会尝试。如果你不小心,即使你很小心,你也会受到无数基于网络的攻击。

你能给我一些链接作为“如果你的朋友不在你的本地网络”部分的文档吗,或者可能只是为了这个例子再详细说明一下?你能给我一些链接作为“如果你的朋友不在你的本地网络”部分的文档吗“如果你的朋友不在你的本地网络上”部分,或者可能只是为这个例子详细说明一下?应该给一些东西阅读应该给一些东西阅读