繁体   English   中英

Java-套接字编程

[英]Java - socket programming

我阅读并观看过的有关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地址并通过端口转发路由器上的正确端口。 虽然,如果您不熟悉这种类型的网络,则不会尝试。 如果您不小心甚至不小心,就可以接受各种基于网络的攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM