互联网上的TCP套接字连接

时间:2019-03-16 11:50:11

标签: java networking tcp

我正在做一个需要服务器和客户端之间进行连接的项目。 我通过添加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下时,所有方法都可以使用。但是我不知道如何通过Internet建立连接。

请帮助您明确步骤。

2 个答案:

答案 0 :(得分:1)

这里:

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

这是本地地址。如果您希望有一台可以在Internet上访问的服务器,则该服务器需要具有其全局公共IP地址!

换句话说:您必须确保可以通过某种方式从Internet访问服务器。例如,求助于托管服务器的某些服务提供商,然后可以为其提供代码!

仅在本地子网中定义192.168个地址的全部用途。

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

含义:当您想接听电话时,需要连接到电话网的电话!

答案 1 :(得分:1)

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

192.168.0.108->这是您的本地IP地址。

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

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

第2步:访问IP Chicken之类的网站,然后找到您的外部IP地址。

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

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

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