标签:网络通信 get 常用 name buffer 发送数据包 静态 catch socket
1 // UDP发送端 2 public static void sendUDPMsg() throws IOException { 3 // 建立UDP服务 4 DatagramSocket datagramSendSocket = new DatagramSocket(); 5 // 把数据封装到数据包中 6 String data = "UDP测试数据"; 7 // 建立数据包 8 DatagramPacket datagramPacket = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(), 9090); 9 // 调用UDP的服务发送数据包 10 datagramSendSocket.send(datagramPacket); 11 // 关闭资源 12 datagramSendSocket.close(); 13 }
1 public static void reveiveUDPMsg() throws IOException{ 2 // 建立UDP服务,监听端口 3 DatagramSocket datagramReceiveSocket = new DatagramSocket(9090); 4 // 建立新的数据包用于存放数据 5 byte[] buf = new byte[1024]; 6 DatagramPacket datagramReceivePacket = new DatagramPacket(buf, buf.length); 7 // 调用UDP服务接收数据存放在数据包的buf中 8 datagramReceiveSocket.receive(datagramReceivePacket); 9 System.out.println("接收到的数据:"+new String(buf, 0, datagramReceivePacket.getLength())); 10 // 关闭资源 11 datagramReceiveSocket.close(); 12 }
1 // 群聊接收端 2 public class WeChatSender extends Thread{ 3 4 @Override 5 public void run() { 6 // 不能直接抛出异常,Thread 7 try { 8 // 建立UDP服务 9 DatagramSocket datagramSendSocket = new DatagramSocket(); 10 // 准备数据,封装到数据包中,用BufferedReader封装可以逐行读取 11 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 12 // 发送数据 13 String line = null; 14 DatagramPacket datagramSendPacket = null; 15 while((line = bufferedReader.readLine())!=null) { 16 // 把数据封装到数据包中然后发送 17 datagramSendPacket = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("192.168.1.255"), 9090); 18 // 发送数据 19 datagramSendSocket.send(datagramSendPacket); 20 } 21 // 关闭资源 22 datagramSendSocket.close(); 23 } catch (IOException e) { 24 // TODO Auto-generated catch block 25 e.printStackTrace(); 26 } 27 } 28 }
1 // 群聊接收端 2 public class WeChatReveiver extends Thread{ 3 4 @Override 5 public void run() { 6 try { 7 // 建立UDP服务,监听端口 8 DatagramSocket datagramReveiveSocket = new DatagramSocket(9090); 9 // 准备空的数据包存储数据 10 byte[] buf = new byte[1024]; 11 DatagramPacket datagramReveivePacket = new DatagramPacket(buf, buf.length); 12 // 调用UDP接收数据 13 boolean flag = true; 14 while(flag) { 15 datagramReveiveSocket.receive(datagramReveivePacket); 16 System.out.println(datagramReveivePacket.getAddress().getHostAddress()+":"+new String(buf, 0, datagramReveivePacket.getLength())); 17 } 18 // 关闭资源 19 datagramReveiveSocket.close(); // 要是判断条件直接为true会永远执行不到 20 } catch (IOException e) { 21 // TODO Auto-generated catch block 22 e.printStackTrace(); 23 } 24 } 25 }
标签:网络通信 get 常用 name buffer 发送数据包 静态 catch socket
原文地址:http://www.cnblogs.com/1989guojie/p/6115930.html