UDP服务器端工作的主要步骤如下:
1.调用DtagramSocket(int port)创建一个数据报套接字,并绑定到指定接口
2.调用DatagramPacket(byte[] ,int)建立一个字节数组以接收数据包
3.调用DtagramSocket的receive(),接受UDP
4.关闭连接
下面是代码demo:
<span style="font-size:18px;">public class Myserver {
public static void main(String[] args) {
//接受字节的大小,不能超过规定大小
byte[] lMsg=new byte[1024];
//实例化DatagramSocket,接受数据包
DatagramPacket dp=new DatagramPacket(lMsg,lMsg.length);
//新建DataSocket
DatagramSocket ds=null;
//UDP监听端口
try {
ds=new DatagramSocket(3999);
//准备接收数据
ds.receive(dp);
System.out.println("kaishi");
</span>
String s=new String(dp.getData(), 0, dp.getData().length);
System.out.println(s);
<span style="font-size:18px;">
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if (ds!=null) {
//关闭ds,防止内存溢出
ds.close();
}
}
</span>
上面讲述的很详细,就不多说了。
下面是android客户端的代码编写:
1.调用DatagramSocket(int port)创建一个数据报套接字。
2.调用DatagramPacket(byte[] buf ,int offset,int length,InetAddress addr ,int port)建立要发送的数据报;
3.调用DatagramSocket.send(DatagramPacket)发送数据包。
4.关闭套接字
代码展示:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
DatagramSocket ds=null;
//定义要发送的消息+端口号
String udmsg="hello from client"+3999;
try {
ds=new DatagramSocket();
//初始化InetAddress对象
InetAddress serverAddr=InetAddress.getByName("10.16.224.147");
DatagramPacket dp=new DatagramPacket(udmsg.getBytes(),udmsg.length(),serverAddr,3999);
//发送
ds.send(dp);
Message message=new Message();
message.what=2;
message.obj="success!!";
handler.sendMessage(message);
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (ds!=null)
ds.close();
}
}
}).start();
}
});
客户端发送效果:
服务器端接收到的结果: