UDP传输协议的特点
1、面向无连接
2、非安全传输协议
3、数据包大小必须在64K以内
4、传输速度快
以下给出网络聊天室的代码
发送端:
/**
* 需求:通过UDP传输协议方式,将一段文字数据发送出去。
* 思路:
* 1、建立udpsocket服务。
* 2、提供数据,并将数据封装到数据包中。
* 3、通过socket服务的发送功能,将数据包发送出去。
* 4、关闭资源。
* @param args
*/
- import java.net.*;
- import java.io.*;
- class UdpSend{
- public static void main(String[] args) throws Exception {
- //1、建立UDP服务
- DatagramSocket dgs = new DatagramSocket(8888);
-
- //2、提供数据源,并打包封装
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- while((line=br.readLine())!=null){
- byte[] buf = line.getBytes();
- DatagramPacket dgp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.23.255"),10000);
-
- //发送数据
- dgs.send(dgp);
- }
-
- //关闭资源
- br.close();
- dgs.close();
- }
- }
复制代码
接收端:
/**
* 需求:
* 定义一个应用程序,用于接受UDP协议传输来的数据并处理。
*
* 思路:
* 1、定义UdpSocket服务
* 2、定义一个数据包,用来存储接收到的字节数据
* 因为数据包对象中有更多功能,可以提取字节数据中的不同数据信息。
* 3、通过socket服务receive方法将收到的数据存入已定义好的数据包中
* 4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
* 5、关闭资源连接
* @author Administrator
*
*/
- import java.net.*;
- import java.io.*;
- public class UdpReceived{
- public static void main(String[] args)throws Exception{
- //1、建立UDP服务,创建socket对象
- DatagramSocket dgs = new DatagramSocket(10000);
-
- //2、创建字符数组,用于存储接收的数据
- byte[] buf = new byte[1024];
- DatagramPacket dgp = new DatagramPacket(buf,buf.length);
-
- while(true){
- //3、通过socket服务获取数据
- dgs.receive(dgp);
-
- //4、通过数据包获取数据
- String addr = dgp.getAddress().getHostAddress();
- int port = dgp.getPort();
-
- String con = new String(dgp.getData(),0,dgp.getLength());
- //String con = new String(buf,0,dgp.getLength());
-
- //5、打印数据,关闭资源
- System.out.println(addr+":"+port+"----"+con);
- }
- }
- }
复制代码
|
|