UDP服务器端代码:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPServer {
public static void main(String[] args) {
DatagramSocket datagramSocket = null;
try {
// 创建UDP服务器端的Socket,监听指定端口
datagramSocket = new DatagramSocket(9876);
System.out.println("Server is listening on port 9876...");
while (true) {
// 接收客户端的数据
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
datagramSocket.receive(receivePacket);
String clientMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("Received from client: " + clientMessage);
// 这里可以进行对客户端数据的处理
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (datagramSocket != null && !datagramSocket.isClosed()) {
datagramSocket.close();
}
}
}
}
UDP客户端代码:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
public static void main(String[] args) {
DatagramSocket datagramSocket = null;
try {
// 创建UDP客户端的Socket
datagramSocket = new DatagramSocket();
// 服务器的IP地址和端口号
InetAddress serverAddress = InetAddress.getByName("localhost");
int serverPort = 9876;
// 发送数据给服务器
String sendData = "Hello, Server!";
byte[] sendDataBytes = sendData.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendDataBytes, sendDataBytes.length, serverAddress, serverPort);
datagramSocket.send(sendPacket);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (datagramSocket != null && !datagramSocket.isClosed()) {
datagramSocket.close();
}
}
}
}
请注意,上述代码中的 "localhost" 部分应该替换为你实际使用的服务器的IP地址。UDP是无连接的,因此不需要像TCP那样建立连接和关闭连接。每个数据包都是独立的,不保证按顺序到达,也不保证可靠性。在实际应用中,你可能需要考虑数据包的丢失和重传等问题。
在Android中使用UDP通信的原理与上述Java示例类似。你可以将服务器端代码放入Java工程中,然后在Android客户端代码中进行调用。确保在AndroidManifest.xml文件中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
这是一个基础入门的基于UDP协议的Socket通信的示例。在实际应用中,你可能需要更复杂的处理逻辑和异常处理。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15209/Android