A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈佳 中级黑马   /  2015-4-9 17:48  /  522 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. import java.net.*;
  3. class Send implements Runnable
  4. {
  5.         private DatagramSocket ds;
  6.         public Send(DatagramSocket ds)//发送的时候要用哪一个socket不确定,所以在发送端在构造时就传一个指定的socket进来
  7.         {
  8.                 this.ds = ds;
  9.         }

  10.         public void run()
  11.         {
  12.                 try//请问这里为什么不抛出异常而是选择了处理异常?
  13.                 {
  14.                         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  15.                         String line = null;

  16.                         while((line=bufr.readLine())!=null)
  17.                         {
  18.                                 byte[] buf = line.getBytes();

  19.                                 DatagramPacket dp =
  20.                                         new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);

  21.                                 ds.send(dp);

  22.                                 if("886".equals(line))
  23.                                         break;
  24.                         }
  25.                 }
  26.                 catch (Exception e)
  27.                 {
  28.                         throw new RuntimeException("发送端失败");
  29.                 }
  30.         }
  31. }

  32. class Rece implements Runnable
  33. {

  34.         private DatagramSocket ds;
  35.         public Rece(DatagramSocket ds)
  36.         {
  37.                 this.ds = ds;
  38.         }
  39.         public void run()
  40.         {
  41.                 try//<span style="line-height: 30.7999992370605px;">请问这里为什么不抛出异常而是选择了处理异常?</span>
  42.                 {
  43.                         while(true)
  44.                         {
  45.                                 byte[] buf = new byte[1024];
  46.                                 DatagramPacket dp = new DatagramPacket(buf,buf.length);
  47.                                 ds.receive(dp);
  48.                                 String ip = dp.getAddress().getHostAddress();
  49.                                 String data = new String(dp.getData(),0,dp.getLength());
  50.                                 if("886".equals(data))
  51.                                 {
  52.                                         System.out.println(ip+"....离开聊天室");
  53.                                         break;
  54.                                 }
  55.                                 System.out.println(ip+":"+data);
  56.                         }
  57.                 }
  58.                 catch (Exception e)
  59.                 {
  60.                         throw new RuntimeException("接收端失败");
  61.                 }
  62.         }
  63. }

  64. class  ChatDemo
  65. {
  66.         public static void main(String[] args) throws Exception
  67.         {
  68.                 DatagramSocket sendSocket = new DatagramSocket();
  69.                 DatagramSocket receSocket = new DatagramSocket(10002);

  70.                 new Thread(new Send(sendSocket)).start();
  71.                 new Thread(new Rece(receSocket)).start();
  72.         }
  73. }
复制代码


1 个回复

倒序浏览
这代码全部是你自己写的啊,感觉好强大啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马