黑马程序员技术交流社区

标题: 【分享】UDP多线程操作 [打印本页]

作者: 暗影流光    时间: 2014-7-12 10:16
标题: 【分享】UDP多线程操作
  1. public class TestUDP {

  2.         /**
  3.          * @param args
  4.          * @throws IOException
  5.          */
  6.         public static void main(String[] args) throws IOException {
  7.                 DatagramSocket send = new DatagramSocket();
  8.                 Send s = new Send(send);
  9.                 DatagramSocket rece = new DatagramSocket(10001);
  10.                 Receive r = new Receive(rece);
  11.                 new Thread(s).start();
  12.                 new Thread(r).start();
  13.         }

  14. }
  15. public class Send implements Runnable {
  16.         private DatagramSocket ds;

  17.         Send(DatagramSocket ds) {
  18.                 this.ds = ds;
  19.         }

  20.         @Override
  21.         public void run() {
  22.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  23.                 String line = null;
  24.                 try {
  25.                         while ((line = br.readLine()) != null) {
  26.                                 byte[] bys = line.getBytes();
  27.                                 InetAddress in = InetAddress.getLocalHost();
  28.                                 DatagramPacket dp = new DatagramPacket(bys, bys.length, in,
  29.                                                 10001);
  30.                                 ds.send(dp);
  31.                                 if(line.equalsIgnoreCase("over"))
  32.                                         break;
  33.                         }
  34.                 } catch (IOException e) {
  35.                         e.printStackTrace();
  36.                 }
  37.         }
  38. }
  39. public class Receive implements Runnable {
  40.         private DatagramSocket ds;

  41.         Receive(DatagramSocket ds) {
  42.                 this.ds = ds;
  43.         }

  44.         @Override
  45.         public void run() {
  46.                 byte[] bys = new byte[1024];
  47.                 DatagramPacket dp = new DatagramPacket(bys, bys.length);
  48.                 try {
  49.                         while (true) {
  50.                                 ds.receive(dp);
  51.                                 String data=new String(dp.getData(),0,dp.getLength());
  52.                                 System.out.println(dp.getAddress().getHostAddress()+":"+data);
  53.                         }
  54.                 } catch (IOException e) {
  55.                         e.printStackTrace();
  56.                 }
  57.         }

  58. }
复制代码



作者: jwx555    时间: 2014-7-12 13:12
一句注释都没有,懒得看了都
作者: 導ぷ仙″兲蕐    时间: 2014-7-12 13:21
额 ,提问结束??




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