标签:
TCP的所有操作都建立在可靠的链接
UDP(数据报协议)发送的消息对方并不一定会接收到,所有的信息都是以数据报的形式发出
使用DatagramSocket类和DatagramPacket类完成操作
服务端UDP:
import java.net.*; import java.io.*; //定义服务端接收信息 public class TestUdpServer { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(9000);//设定监听端口号 byte bytes[] = new byte[1024];//1KB DatagramPacket dp = new DatagramPacket(bytes,bytes.length);//DatagramPacket(byte[] buf, int length)构造方法 //设定循环接收 String str = null; while (true) { ds.receive(dp);//阻塞式方法,一直到接收到数据才解锁 System.out.println("接收数据 : "); str = new String(bytes,0,dp.getLength()); //注意receive之后,dp填充的是bytes数组 System.out.println(str + ": "+ dp.getAddress().getHostName() + "-----" + dp.getSocketAddress()); } }catch(SocketException e1) { e1.printStackTrace(); }catch(IOException e2) { e2.printStackTrace(); } } }
客户端UDP:
import java.net.*; import java.io.*; //定义客户端发送信息 public class TestUdpClient { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(8888);//设定监听端口 String str = "Hello Word!"; byte bytes[] = str.getBytes(); //DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) //InetSocketAddress(InetAddress addr, int port) DatagramPacket dp = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("192.168.0.121",9000)); ds.send(dp); ds.close(); }catch(SocketException e) { e.printStackTrace(); }catch(IOException e2) { e2.printStackTrace(); } } }
结果:
标签:
原文地址:http://www.cnblogs.com/yhwsy/p/5829510.html