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

© sven556677 中级黑马   /  2015-8-21 16:17  /  283 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

打的冲忙,没怎么加注释
  1. package com.cn.test;
  2. import java.io.*;
  3. import java.net.*;

  4. /**
  5. * 聊天程序,一个线程负责发送,一个线程负责接收
  6. * @author Administrator
  7. *
  8. */
  9. class RcvThread implements Runnable{
  10.         private DatagramSocket ds;
  11.         public RcvThread (DatagramSocket ds){
  12.                 this.ds=ds;
  13.         }
  14.         public void run() {
  15.                 try {
  16.                         while(true){
  17.                                
  18.                                 byte[] buf=new byte[1024];
  19.                                 DatagramPacket dp=new DatagramPacket(buf, buf.length);
  20.                                 ds.receive(dp);
  21.                                 String content=new String(dp.getData(),0,dp.getLength());
  22.                                 String ip=dp.getAddress().getHostAddress();
  23.                                 int add=dp.getPort();
  24.                                 System.out.println("内容"+content+"地址"+ip+"端口"+add);
  25.                         }
  26.                        
  27.                 } catch (Exception e) {
  28.                         // TODO 自动生成的 catch 块
  29.                         e.printStackTrace();
  30.                 }
  31.         }
  32.        
  33. }
  34. class SendThread implements Runnable{
  35.         DatagramSocket ds;
  36.         public SendThread(DatagramSocket ds){
  37.                 this.ds=ds;
  38.         }
  39.         public void run(){
  40.                 try {
  41.                         DatagramSocket ds=new DatagramSocket();
  42.                         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  43.                         String line=null;
  44.                         while((line=br.readLine())!=null){
  45.                                 byte [] buf=line.getBytes();
  46.                                 DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.4"),5244);
  47.                                 ds.send(dp);
  48.                                 if("886".equals(line))break;
  49.                         }
  50.                         ds.close();
  51.                 } catch (Exception e) {
  52.                         // TODO 自动生成的 catch 块
  53.                         e.printStackTrace();
  54.                 }
  55.                
  56.         }
  57. }
  58. public class UDPChater {

  59.         public static void main(String[] args) throws SocketException {
  60.                 DatagramSocket rds=new DatagramSocket(5244);
  61.                 DatagramSocket sds=new DatagramSocket();
  62.                 RcvThread rt=new RcvThread(rds);
  63.                 SendThread st=new SendThread(sds);
  64.                 new Thread(rt).start();
  65.                 new Thread(st).start();
  66.         }

  67. }
复制代码



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