繁体   English   中英

通过 Internet 的 TCP 套接字连接

[英]TCP socket connection over internet

我正在做一个需要服务器和客户端之间连接的项目。 我是通过添加 TCP 套接字来实现的。

这是代码部分:服务器:

    ServerSocket welcomeSocket = new ServerSocket(80);
    while(true)
    {
        Socket connectionSocket = welcomeSocket.accept();
        WorkerThread wt = new WorkerThread(connectionSocket, id);
        Thread t = new Thread(wt);
        t.start();
        workerThreadCount++;

    }

客户 :

        Socket skt = new Socket("192.168.0.108", 80); // The IP address is from cmd->ipconfig/all-> IPv4 Address
        outToServer = new PrintWriter(skt.getOutputStream(), true);
        inFromServer = new BufferedReader(new InputStreamReader(skt.getInputStream()));

当两端都在同一设备中/在同一个 WiFi 下时,这一切都有效。但我不明白如何通过互联网创建连接。

请帮助提供明确的步骤。

这里:

Socket skt = new Socket("192.168.0.108", 80);

那是本地地址。 如果您想拥有一台可在 Internet 上访问的服务器,那么该服务器需要拥有其全球公共 IP 地址!

换句话说:您必须确保可以通过 Internet 以某种方式访问​​服务器。 例如,通过转向一些托管服务器的服务提供商,然后您可以配备您的代码!

192.168 地址的全部目的是仅在本地子网中定义。

或者,您必须检查您的 ISP 是否有一项服务,即 ISP 为您的连接分配一个 IP 地址,并允许来自 Internet 的呼叫转到您的“位置”。

意思是:当您要接听电话时,您需要一部已连接电话网的电话!

为了通过 WAN 连接到套接字,您必须将该端口转发到本地设备。 这可以在路由器的设置中完成。

192.168.0.108 --> 那是你的本地 IP 地址。

这可以在您的本地网络上使用,而无需任何端口转发要求。 但是,要通过 WAN 使用它,请执行以下步骤:

第 1 步:在 Google 上搜索路由器的型号和端口转发,了解如何将端口 80 转发到您的本地 IP 地址。 警告:在您的本地设备上使用静态 IP 地址以防止您的 IP 在重新启动后更改。

第 2 步:访问IP Chicken等网站并找到您的外部 IP 地址。

然后,您可以使用以下方法连接到您的套接字:

Socket skt = new Socket("[EXTERNALIP]", 80);

请注意:除非您有业务网络,否则您的外部 IP 地址可能会不时更改。

暂无
暂无

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

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