android wifi通信
时间: 2023-10-18 10:12:26 浏览: 82
Android设备可以通过WiFi实现与其他设备的通信,具体步骤如下:
1. 确保设备与WiFi网络连接正常;
2. 获取本地IP地址;
3. 初始化Socket对象;
4. 建立连接;
5. 通过Socket对象实现数据的传输。
以下是一个简单的示例代码:
```java
private void connectToServer() {
final String serverIp = "192.168.0.100"; //服务器IP地址
final int serverPort = 8888; //服务器端口号
new Thread(new Runnable() {
@Override
public void run() {
try {
//获取本地IP地址
InetAddress localAddr = InetAddress.getByName(getLocalIpAddress());
//初始化Socket对象
Socket socket = new Socket(serverIp, serverPort, localAddr, 0);
//建立连接
socket.connect(new InetSocketAddress(serverIp, serverPort), 5000);
//通过Socket对象实现数据的传输
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
out.println("Hello server!"); //向服务器发送数据
String response = in.readLine(); //读取服务器返回的数据
Log.d(TAG, "response from server: " + response);
//关闭连接
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
//获取本地IP地址
private String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return null;
}
```
在上面的示例中,我们使用了Socket通信来实现Android设备与服务器之间的通信。其中,我们需要获取本地IP地址,并通过Socket对象实现数据的传输。需要注意的是,这只是一个简单的示例,实际应用中需要根据具体需求进行修改。
阅读全文