黑马程序员技术交流社区

标题: java基础: [打印本页]

作者: 韩秀山    时间: 2013-5-14 20:54
标题: java基础:
今天老师说:使用线程和Io流可以实现局域网聊天。谁能帮我做一个,要有详细的注释,说明每个语句的意思??谢谢大家了。。

作者: 尹丽峰    时间: 2013-5-14 21:10
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.net.*;

  5. public class duoxianchengliaotian
  6. {
  7.         public static void main(String[]args) throws Exception
  8.         {
  9.                 DatagramSocket sendSocket = new DatagramSocket();
  10.                 DatagramSocket resceSocket = new DatagramSocket(10000);
  11.                 send s = new send(sendSocket);
  12.                 resce r = new resce(resceSocket);
  13.                 Thread t1 = new Thread(s);
  14.                 Thread t2 = new Thread(r);
  15.                 t1.start();
  16.                 t2.start();
  17.         }
  18. }

  19. class send implements Runnable {
  20.         private DatagramSocket ds;
  21.         public  send(DatagramSocket ds)
  22.         {
  23.                 this.ds=ds;
  24.         }
  25.         public void run()
  26.         {
  27.                 String line =null;
  28.                 BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
  29.                 try {
  30.                         while((line=bfr.readLine())!=null)
  31.                         {
  32.                                 byte[] buf  = line.getBytes();
  33.                                 DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.102"),10000);
  34.                                 ds.send(dp);
  35.                                
  36.                         }
  37.                 } catch (IOException e) {
  38.                         // TODO Auto-generated catch block
  39.                         e.printStackTrace();
  40.                 }
  41.         }

  42. }

  43. class resce implements Runnable
  44.         {
  45.                 private DatagramSocket ds;
  46.                 public  resce(DatagramSocket ds)
  47.                 {
  48.                         this.ds=ds;
  49.                 }
  50.                 public void run()
  51.                 {
  52.                         String line =null;
  53.                        
  54.                         while(true)
  55.                         {
  56.                                 byte[]buf = new byte[1024];
  57.                                 DatagramPacket dp = new DatagramPacket(buf, buf.length);
  58.                                 try {
  59.                                         ds.receive(dp);
  60.                                         String ip = dp.getAddress().getHostAddress();
  61.                                         String data = new String(dp.getData(),0,dp.getLength());
  62.                                         System.out.println(ip+":::"+data);
  63.                                        
  64.                                 } catch (IOException e) {
  65.                                         // TODO Auto-generated catch block
  66.                                         e.printStackTrace();
  67.                                 }
  68.                                 //ds.close();
  69.                         }
  70.                 }
  71.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2