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