我正在做一个需要服务器和客户端之间进行连接的项目。 我通过添加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建立连接。
请帮助您明确步骤。
答案 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地址可能会不时更改。