0
我正在使用客戶端服務器體系結構。我需要將我的本地IP地址發送到服務器。Socket編程android
我通過下面使用此代碼完成它:
Socket soc = new Socket(ipaddress,port)
但問題是,我的本地IP地址,並與上面的代碼中獲得的地址是不同的。
如何解決這個難點? 請幫忙。 預先感謝
我正在使用客戶端服務器體系結構。我需要將我的本地IP地址發送到服務器。Socket編程android
我通過下面使用此代碼完成它:
Socket soc = new Socket(ipaddress,port)
但問題是,我的本地IP地址,並與上面的代碼中獲得的地址是不同的。
如何解決這個難點? 請幫忙。 預先感謝
Socket mSocket = new Socket(hostAddress, port)
hostAddress是服務器地址(遠程主機地址)。 端口是執行IO操作的端口號。
您可以手動發送地址到服務器: -
try {
InetAddress addr = InetAddress.getByName("hostIpAddress");
Socket mSocket = new Socket(addr,8080);
DataOutputStream dataOutputStream = new DataOutputStream(
mSocket.getOutputStream());
DataInputStream dataInputStream = new
DataInputStream(mSocket.getInputStream());
dataOutputStream.writeUTF(getIpAddress());
String sereverMesssage = dataInputStream.readUTF();
if(sereverMesssage!=null && sereverMesssage.equals("Success")){
Log.i("Socket","Local Ip Address received by server");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private String getIpAddress() {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return ip;
}
'serverMessage'不能爲空。你假設對等使用'readUTF()'。 – EJP
你的問題就沒有意義了。 '新的Socket(...)'沒有獲得IP地址,它會創建一個出站連接。無論如何,你需要發送它爲什麼?只要客戶端連接,服務器就可以從接受的套接字中獲取它。 – EJP