import java.net.DatagramSocket; import java.net.*; import java.io.*; public class Send implements Runnable{ private DatagramSocket ds; public Send(DatagramSocket ds){ this.ds=ds; } public void run(){ try{ BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); String text = null; while((text=bfr.readLine())!=null){ byte[]buf = text.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10001); ds.send(dp); if("88".equals(text)){ break; } // ds.close(); } } catch(Exception e){ }finally{ ds.close(); } } }
import java.net.*; import java.io.*; public class Rece implements Runnable{ private DatagramSocket ds; public Rece(DatagramSocket ds){ this.ds=ds; } public void run(){ while(true){ try{ byte[]buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String text = new String(dp.getData(),0,dp.getLength()); System.out.println(ip+" "+text); if(text.equals("88")){ System.out.println(ip+"::退出聊天室"); } }catch(Exception e){} } } }
import java.io.IOException; import java.net.DatagramSocket; import java.net.SocketException; public class Exe{ public static void main(String[]args)throws IOException{ DatagramSocket send = new DatagramSocket(); DatagramSocket rece = new DatagramSocket(10001); Send s = new Send(send); Rece r = new Rece(rece); new Thread(s).start(); new Thread(r).start(); } }
UDP是比较常见的传输协议,通过网络流DatagramSocket完成传输,Datagrampacket作为数据包,以上面的聊天软件代码为例;虽然UDP传输安全性不高,但是速度快,适合于聊天软件,视频软件等开发使用;相对于TCP来说UDP不需要建立连接,提高了效率;最近比较忙于敲代码,所以博客更新较慢,后续会给大家带来TCP传输协议的使用;