首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Java编程
EN

Stack Overflow用户
提问于 2017-05-04 18:51:52
回答 1查看 71关注 0票数 1

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

例如,以以下基本的服务器-客户机类为例:

服务器-类

代码语言:javascript
运行
复制
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();
    }
}

客户类

代码语言:javascript
运行
复制
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。为了使代码正常工作,必须对此代码进行哪些更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 18:56:21

"localhost“本质上是回送IP地址127.0.0.1的别名。

如果您的朋友要连接到您的服务器,代码必须有您服务器的IP地址而不是"localhost“。

重要的是,如果您的朋友不在您的本地网络,您将不得不使用您的出站IP地址和端口转发适当的端口在您的路由器。虽然,如果你不熟悉这种类型的网络,我不会尝试。如果你不小心,即使你很小心,你也可以面对无数基于网络的攻击。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43790698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档