Я пытаюсь связать два устройства для обмена данными.Одно устройство действует как server and creates hot spot
, а другая сторона действует как client
и подключается к hot spot
.Я программно подключаю устройство по этому коду.
addNetwork(WifiMgr.createWifiCfg(ssid, password, sType));
public static WifiConfiguration createWifiCfg(String ssid, String password, int type){
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + ssid + "\"";
if(type == WIFICIPHER_NOPASS){
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
}else if(type == WIFICIPHER_WEP){
config.hiddenSSID = true;
config.wepKeys[0]= "\""+password+"\"";
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}else if(type == WIFICIPHER_WPA){
config.preSharedKey = "\"" + password + "\"";
config.status = WifiConfiguration.Status.ENABLED;
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
}
return config;
}
public boolean addNetwork(WifiConfiguration wf){
disconnectCurrentNetwork();
int netId = mWifiManager.addNetwork(wf);
boolean enable = mWifiManager.enableNetwork(netId, true);
return enable;
}
Этот код успешно подключает устройства.На стороне клиента для связи мне нужен сервер IP address
.Следующий код возвращает IP address
private InetAddress getReceiverIP() {
final String address = Formatter.formatIpAddress(dhcp.gateway);// gateway - default gateway IP address
InetAddress receiverIP = null;
try {
receiverIP = InetAddress.getByName(address);
if(mDebug)
Log.i("FileSender","Receiver Name : " + address);
Log.i("FileSender","Receiver IP : " + receiverIP.toString());
} catch (Exception e) {
if(mDebug)
Log.e("FileSender","Cannot find receiver's IP. Error : " + e.toString());
}
return receiverIP;
}
Проблема в том, что когда я подключаюсь к сети вручную, делая это с экрана настроек устройства, IP-адрес получателя принимается как 192.168.143.1
, и данные успешно передаются.Но когда я подключаю устройства программно, даже после подключения, он дает IP-адрес как 0.0.0.0
, и поэтому в соединении отказано.Пожалуйста, скажите мне, что я делаю не так.