0
我想制作一个基于android的信使,我正在设计这样一种方式,即两个互相聊天的te用户都是服务器和客户端。访问不同网络中具有一个基于公共IP的路由器并且设备具有本地IP地址的设备存在问题。我可以将消息发送到公共IP设备,但我无法使用公共接口路由器访问本地网络内的设备。 说 发件人IP:130.190.93.68 路由器的IP是:130.190.09.54 路由器专网内reciever的IP:192.168.15.186如何从互联网上访问本地IP设备
发送者希望与接收器通信。我如何使用套接字编程来实现它。
编辑代码从评论:
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);
感谢Joachim,但问题是,当我使用代码“new ServerSocket(ipAddress,port)”创建ServerSocket时,我需要给出IP地址以及如何获取本地网络中接收器的IP地址。你能告诉我,即使接收者在私人网络中,Skype联系人如何知道对方的IP。 – learner
@learner不是一个特定的地址,而是总是有一个通配符地址,这使得服务器套接字在所有接口(以及所有地址)上侦听。据我所知,Skype使用的中央目录服务器非常像我在我的回答中描述的服务器。 –
我正在粘贴我的客户端访问服务器的代码。你可以指导我修改它以访问wildcarda地址 – learner