使用java 在android上 实现socket udp 通信
时间: 2024-04-11 17:28:38 浏览: 10
你可以使用Java在Android上实现UDP Socket通信。下面是一个简单的示例代码:
首先,在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
然后,在你的Activity或者Fragment中,可以创建一个UDP通信的类,如下所示:
```java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
private DatagramSocket socket;
private InetAddress address;
private int port;
public void connect(String ipAddress, int port) throws IOException {
this.address = InetAddress.getByName(ipAddress);
this.port = port;
// 创建UDP Socket
socket = new DatagramSocket();
}
public void send(String message) throws IOException {
byte[] buffer = message.getBytes();
// 创建发送的数据包
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
// 发送数据包
socket.send(packet);
}
public void receive() throws IOException {
byte[] buffer = new byte[1024];
// 创建接收的数据包
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
// 接收数据包
socket.receive(packet);
// 处理接收到的数据
String receivedMessage = new String(packet.getData(), 0, packet.getLength());
// TODO: 处理接收到的数据
}
public void close() {
if (socket != null) {
socket.close();
}
}
}
```
在你的Activity或者Fragment中,你可以使用以下代码进行UDP通信:
```java
public class MainActivity extends AppCompatActivity {
private UDPClient udpClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
udpClient = new UDPClient();
try {
udpClient.connect("服务器IP地址", 12345);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
udpClient.close();
}
private void sendMessage(String message) {
try {
udpClient.send(message);
} catch (IOException e) {
e.printStackTrace();
}
}
private void receiveMessage() {
try {
udpClient.receive();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
你可以调用`sendMessage`方法发送消息,调用`receiveMessage`方法接收消息。请替换示例代码中的服务器IP地址和端口号为实际的值。
需要注意的是,UDP是无连接的协议,因此无法保证消息的可靠性和顺序性。如果需要更可靠的通信,你可以考虑使用TCP协议。