一、服务器端建立Socket监听
1、Class类里添加PORT定义
//add by cbl 3-9 Socket global variable
private static final int PORT = 20001;
2、创建监听线程
class LooperThread extends Thread {
public void run() {
Looper.prepare();
startSocket();
Looper.loop();
}
}
public void startSocket() {
//UDP receive
try
{
DatagramSocket socket=new DatagramSocket(PORT);
byte data[]=new byte[1024];
while(true){
DatagramPacket packet = new DatagramPacket(data,data.length);//注意此句不能放在循环外面的上面代码中,否则packet长度为第一次收到数据的长度,不被动态改变
socket.receive(packet);
String result= new String(packet.getData(),packet.getOffset(),packet.getLength());
//Log.v("getData----->","********:"+new String(packet.getData())+"***"+packet.getOffset()+"***"+packet.getLength()+"******");
Log.v("result----->","***************:"+result+"***************");
//commitResultText(result);//调用显示文本函数
}
} catch (Exception e) {
e.printStackTrace();
}
}
3、开启线程实现监听,放在OnCreate函数中,或其他需要启动监听的入口
//add by cbl 3-9 开启线程实现监听
new LooperThread().start();
二、客户端实现UDP Socket发送
1、定义PORT和HOST
private static final String HOST = "127.0.0.1";
private static final int PORT = 20001;
2、发送UDP 数据
//UDP client Send
try{
DatagramSocket socket = new DatagramSocket(PORT);
InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
String str= "Msg from UDP Client!";//ed_msg.getText().toString();
byte data[]=str.getBytes();
DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,PORT);
socket.send(packet);
}catch(Exception e){
e.printStackTrace();
}
Manifest.xml 添加网络授权
<uses-permission android:name="android.permission.INTERNET"/>