- import java.io.*;
- import java.net.*;
- class Send implements Runnable{
- private DatagramSocket ds;
- public Send(DatagramSocket ds){
- this.ds = ds;
- }
-
- public void run(){
- try{
- BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
-
- String line = null;
-
- while((line = bufr.readLine())!= null){
- byte[] buf = line.getBytes();
-
- DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),8888);
-
- ds.send(dp);
-
- if("886".equals(line)){
- System.exit(0); //楼主,在这里就不该使用break了,而应该直接退出程序;
- }
- }
- }
- catch(Exception e){
- throw new RuntimeException("读取失败");
- }
- }
- }
- class Rece implements Runnable{
- private DatagramSocket ds;
-
- public Rece(DatagramSocket ds){
- this.ds = ds;
- }
-
- public void run(){
- try{
- while(true){
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf,buf.length);
-
- ds.receive(dp);
- String ip = dp.getAddress().getHostAddress();
-
- String data = new String(dp.getData(),0,dp.getLength());
-
- System.out.println(ip + "...." + data);
- }
- }
- catch(Exception e){
- throw new RuntimeException("接收失败");
- }
- }
- }
- class ChatDemo{
- public static void main(String args[])throws Exception{
- DatagramSocket sendSocket = new DatagramSocket();
- DatagramSocket receSocket = new DatagramSocket(8888);
-
- new Thread(new Send(sendSocket)).start();
- new Thread(new Rece(receSocket)).start();
- }
- }
复制代码 |