A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

UDP传输协议的特点
1、面向无连接
2、非安全传输协议
3、数据包大小必须在64K以内
4、传输速度快
以下给出网络聊天室的代码

发送端:
/**
* 需求:通过UDP传输协议方式,将一段文字数据发送出去。
* 思路:
* 1、建立udpsocket服务。
* 2、提供数据,并将数据封装到数据包中。
* 3、通过socket服务的发送功能,将数据包发送出去。
* 4、关闭资源。
* @param args
*/

  1. import java.net.*;
  2. import java.io.*;

  3. class UdpSend{
  4.         public static void main(String[] args) throws Exception {
  5.                 //1、建立UDP服务
  6.                 DatagramSocket dgs = new DatagramSocket(8888);
  7.                
  8.                 //2、提供数据源,并打包封装
  9.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  10.                 String line = null;
  11.                 while((line=br.readLine())!=null){
  12.                         byte[] buf = line.getBytes();
  13.                         DatagramPacket dgp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.23.255"),10000);
  14.                        
  15.                         //发送数据
  16.                         dgs.send(dgp);
  17.                 }
  18.                
  19.                 //关闭资源
  20.                 br.close();
  21.                 dgs.close();
  22.         }
  23. }
复制代码



接收端:
/**
* 需求:
* 定义一个应用程序,用于接受UDP协议传输来的数据并处理。
*
* 思路:
* 1、定义UdpSocket服务
* 2、定义一个数据包,用来存储接收到的字节数据
*                 因为数据包对象中有更多功能,可以提取字节数据中的不同数据信息。
* 3、通过socket服务receive方法将收到的数据存入已定义好的数据包中
* 4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
* 5、关闭资源连接
* @author Administrator
*
*/

  1. import java.net.*;
  2. import java.io.*;

  3. public class UdpReceived{
  4.         public static void main(String[] args)throws Exception{
  5.                 //1、建立UDP服务,创建socket对象
  6.                 DatagramSocket dgs = new DatagramSocket(10000);
  7.                
  8.                 //2、创建字符数组,用于存储接收的数据
  9.                 byte[] buf = new byte[1024];
  10.                 DatagramPacket dgp = new DatagramPacket(buf,buf.length);
  11.                
  12.                 while(true){
  13.                         //3、通过socket服务获取数据
  14.                         dgs.receive(dgp);
  15.                        
  16.                         //4、通过数据包获取数据
  17.                         String addr = dgp.getAddress().getHostAddress();
  18.                         int port = dgp.getPort();
  19.                        
  20.                         String con = new String(dgp.getData(),0,dgp.getLength());
  21.                         //String con = new String(buf,0,dgp.getLength());
  22.                        
  23.                         //5、打印数据,关闭资源
  24.                         System.out.println(addr+":"+port+"----"+con);
  25.                 }
  26.         }
  27. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马