[英]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.