0

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

发送方想与接收方通信。如何使用套接字编程实现它。

从评论编辑代码:

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);
4

1 回答 1

0

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

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

于 2012-11-10T12:20:24.160 回答