DatagramSocket和DatagramPacket的使用

来源:互联网 发布:origin画图软件注册 编辑:程序博客网 时间:2024/05/21 09:18
/**   * @Title: SocketDemo.java* @Package net* @Description:* @author huangjie* @email hj@21food.cn* @date May 7, 2012 6:35:46 PM* @version V1.0   */package net;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class SocketDemo {public static void main(String[] args) throws SocketException {DatagramSocket ds1=new DatagramSocket();DatagramSocket ds2=new DatagramSocket(10000);new Thread(new Send(ds1)).start();new Thread(new Receive(ds2)).start();}}class Send implements Runnable{DatagramSocket ds=null;public Send(DatagramSocket ds){this.ds=ds;}public void run() {// TODO Auto-generated method stubBufferedReader br=new BufferedReader(new InputStreamReader(System.in));String line=null;try{while((line=br.readLine())!=null){byte[] buf=line.getBytes();DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10000);ds.send(dp);}}catch(IOException e){e.printStackTrace();}finally{ds.close();}}}class Receive implements Runnable{DatagramSocket ds=null;public Receive(DatagramSocket ds){this.ds=ds;}public void run(){try{byte[] buf=new byte[1024];DatagramPacket dp=new DatagramPacket(buf,0,buf.length);while(true){ds.receive(dp);String data=new String(dp.getData(),0,dp.getLength());System.out.println(data+":"+dp.getAddress().getHostAddress());}}catch(Exception e){e.printStackTrace();}finally{ds.close();}}}