我创建连接两个Android设备一个简单的聊天程序,他们可以发送简单的消息,我一个端口上运行与插座的服务器(1234例)
问题是从客户端,我不知道服务器的IP地址。 (我不想手动输入)有没有办法找到这是一个特定端口上运行的服务器?或者我可以在一些特定的静态IP,我可以给它的客户端运行的服务器?
如果不是有与Android上工作的Android设备进行通信的另一种方式2.2+(不希望使用WiFi直连)?
提前致谢
我创建连接两个Android设备一个简单的聊天程序,他们可以发送简单的消息,我一个端口上运行与插座的服务器(1234例)
问题是从客户端,我不知道服务器的IP地址。 (我不想手动输入)有没有办法找到这是一个特定端口上运行的服务器?或者我可以在一些特定的静态IP,我可以给它的客户端运行的服务器?
如果不是有与Android上工作的Android设备进行通信的另一种方式2.2+(不希望使用WiFi直连)?
提前致谢
您可以从广播服务器指定信息在你的ip UDP报文。 让客户端接收广播和使用味精作为IP地址连接到插座。 (PS:广播接收器必须b允许接收广播)。 和你做!
主要是指定一台服务器用于获取详细信息,如IP地址,端口号等。从所有的客户。 当被激活时的每个客户端将联系服务器以本身第一寄存器和将获得其他设备的详细信息(IP地址等)进行通信。 现在,他们可以开始等待特定的设备。
在4.1你可以使用Mutlicast DNS为通过服务发现NsdManager
(如果你是在同一网络上)。 如果您需要这在互联网上工作/ 3G真的有做到这一点没有什么好办法。 你可以使用谷歌云消息传递(GCM)通知客户有关服务器的地址,但在任何情况下,你将需要对所有参与者都可以达到稳定的地址一个“真正的”服务器。
http://developer.android.com/reference/android/net/nsd/NsdManager.html
InetAddress.getLocalHost(); 亘古不为我工作,但雅低于我的代码工作
DhcpInfo dhcp = mWifiManager.getDhcpInfo();
int dhc = dhcp.serverAddress;
String dhcS = ( dhc & 0xFF)+ "."+((dhc >> 8 ) & 0xFF)+"."+((dhc >> 16 ) & 0xFF)+"."+((dhc >> 24 ) & 0xFF);
深舱货轮包含服务器的IP地址,我使用多台设备之间的无线连接。
您可以使用此代码
connectionSocket.getRemoteSocketAddress();
否端口不能固定一个IP。 它总是由用户提供。 要自动知道服务器的IP地址,你可以运行的聊天程序相关联的这一计划。
public class Net {
public Net() throws UnknownHostException {
InetAddress ia = InetAddress.getLocalHost();
System.out.println(ia);
ia = InetAddress.getByName("local host");
System.out.println(ia);
}
public static void main(String args[]) throws UnknownHostException {
Net a = new Net();
}
}
你可以运行这个程序由与您聊天程序相关联的按钮的帮助。