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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© YC匪帮 中级黑马   /  2015-9-8 16:24  /  256 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 编写聊天程序。
  3. 有收数据的部分和发数据的部分。
  4. 这两部分需要同时执行。
  5. 那就需要用到多线程技术。


  6. 因为收和发动作是不一致的,所以要定义两个run方法。
  7. 而且这两个方法要封装到不同的类中。
  8. */
  9. import java.io.*;
  10. import java.net.*;

  11. class Send implements Runnable
  12. {
  13.         private DatagramSocket ds;
  14.         public Send(DatagramSocket ds)
  15.         {
  16.                 this.ds=ds;
  17.         }
  18.         public void run()
  19.         {
  20.                 try
  21.                 {
  22.                         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  23.                         String line = null;

  24.                         while ((line=bufr.readLine())!=null)
  25.                         {
  26.                                 if ("886".equals(line))
  27.                                 {
  28.                                         break;
  29.                                 }
  30.                                 byte[] buf= line.getBytes();

  31.                                 DatagramPacket dp =
  32.                                         new DatagramPacket(buf,buf.length,InetAddress.getByName("222.199.193.2"),10002);

  33.                                 ds.send(dp);
  34.                         }
  35.                 }
  36.                 catch (Exception e)
  37.                 {
  38.                         throw new RuntimeException("发送端失败");
  39.                 }
  40.         }
  41. }

  42. class Rece implements Runnable
  43. {
  44.         private DatagramSocket ds;
  45.         public Rece(DatagramSocket ds)
  46.         {
  47.                 this.ds=ds;
  48.         }
  49.         public void run()
  50.         {
  51.                 try
  52.                 {
  53.                         while (true)
  54.                         {
  55.                                 byte[] buf = new byte[1024];
  56.                                 DatagramPacket dp = new DatagramPacket(buf,buf.length);

  57.                                 ds.receive(dp);

  58.                                 String ip = dp.getAddress().getHostAddress();
  59.                                 String data = new String(dp.getData(),0,dp.getLength());

  60.                                 System.out.println(ip+":"+data);
  61.                         }
  62.                 }
  63.                 catch (Exception e)
  64.                 {
  65.                         throw new RuntimeException("接收端失败");
  66.                 }
  67.                
  68.         }
  69. }

  70. class  ChatDemo
  71. {
  72.         public static void main(String[] args) throws Exception
  73.         {
  74.                 DatagramSocket sendSocket = new DatagramSocket();
  75.                 DatagramSocket receSocket = new DatagramSocket(10002);

  76.                 new Thread(new Send(sendSocket)).start();
  77.                 new Thread(new Rece(receSocket)).start();

  78.         }
  79. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马