我想用P2P和TCP创建一个屏幕共享程序。根据我的阅读,这意味着没有主服务器,所有客户端都有Socket
和ServerSocket
我不知道如何在外部而不是本地进行这项工作。
要创建ServerSocket
,您需要提及您正在使用的端口,但是要这样做,您需要在路由器上进行端口转发。问题是我不确定客户端上是否有开放端口可以在客户端上创建服务器。
我确实读过有关UPnP
的信息,之后我做了以下事情:
我试图从另一个网络连接到我计算机上的服务器。我没有端口转发就在计算机上创建了ServerSocket
,禁用了防火墙并在路由器上启用了UPnP
。但是来自其他网络的计算机无法连接到我的服务器。如果需要,则是服务器的代码:
public static void main(String[] args) throws IOException
{
System.out.println("server");
ServerSocket server = new ServerSocket(ANY_PORT);
while(true)
{
Socket s = server.accept();
System.out.println(s.getInetAddress() + " " + s.getPort());
}
}
这是客户:
public static void main(String[] args) throws UnknownHostException, IOException
{
Socket client = new Socket(MY_IP, ANY_PORT);
client.close();
}