如何从Internet访问本地IP设备

时间:2012-11-10 12:11:35

标签: java network-programming

我想制作一个基于android的信使,我在其中设计的方式是彼此聊天的用户都是彼此的服务器和客户端。访问具有一个基于公共IP的路由器并且设备具有本地IP地址的不同网络中的设备存在问题。我可以向公共IP设备发送消息,但我无法使用公共接口路由器访问本地网络内的设备。 说 发件人IP:130.190.93.68 路由器IP是:130.190.09.54 路由器专用网内的接收方IP:192.168.15.186

Sender希望与接收者沟通。如何使用套接字编程实现它。

修改评论代码:

public class SocketClient extends Activity {
    private Socket socket;
    private String serverIpAddress = "192.168.15.186";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bt = (Button) findViewById(R.id.myButton);
        tv = (TextView) findViewById(R.id.myTextView);

        InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
        socket = new Socket(serverAddr, 5000);

1 个答案:

答案 0 :(得分:0)

一种解决方案是拥有一个用户必须登录的中央服务器,当用户想要与其他人聊天时,如果其中一个客户端位于专用网络而另一个客户端不在,那么客户端就是专用网络获取公共网络上客户端的地址并启动聊天会话。

如果两个客户端都在专用网络上,那么它必须通过服务器。如果没有客户端在专用网络上,则服务器随机决定哪个客户端应该是启动连接的客户端。