网络编程-udp通信
package com.it.www; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; class Send implements Runnable{ private DatagramSocket datagramSocket ; Send(DatagramSocket datagramSocket){ this.datagramSocket = datagramSocket; } @Override public void run() { // TODO Auto-generated method stub try { //创建一个字符输入流 InputStreamReader in = new InputStreamReader(System.in); //创建一个包装类,把字符流放到缓存中 BufferedReader buff = new BufferedReader(in); String line = null; while((line = buff.readLine()) != null) { if("885".equals(line)) break; byte[] dataLine = line.getBytes();// 字符串数据转化为字节数据 DatagramPacket datagramPacket = new DatagramPacket(dataLine, dataLine.length, InetAddress.getByName("127.0.0.1"), 10001); datagramSocket.send(datagramPacket); } datagramSocket.close(); } catch (Exception e) { // TODO: handle exception throw new RuntimeException("发送端失败"); } } } class Receive implements Runnable{ DatagramSocket datagramSocket ; public Receive(DatagramSocket datagramSocket) { // TODO Auto-generated constructor stub this.datagramSocket = datagramSocket; } @Override public void run() { // TODO Auto-generated method stub try { while(true) { byte[] data = new byte[1024]; //声明一个字节包,用来存放接收对方的数据 DatagramPacket datagramPacket = new DatagramPacket(data, data.length); //通古socket服务将收到的数据存到数据包中 datagramSocket.receive(datagramPacket); //获取对方的主机地址 System.out.println(datagramPacket.getAddress().getHostAddress()); //获取对方发送的数据 String dataString = new String(datagramPacket.getData(),0,datagramPacket.getLength()); System.out.println("dataString ="+dataString); } } catch (Exception e) { // TODO: handle exception throw new RuntimeException("接收失败"); } } } public class UdpCommunicate{ public static void main(String[] args) throws Exception { DatagramSocket sendDatagramSocket = new DatagramSocket(); DatagramSocket receivedDatagramSocket = new DatagramSocket(10001); new Thread(new Send(sendDatagramSocket)).start(); new Thread(new Receive(receivedDatagramSocket)).start(); } }