亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? peer.java

?? 利用hashtable實(shí)現(xiàn)網(wǎng)絡(luò)廣播
?? JAVA
字號(hào):
import java.util.*;import java.net.*;import java.io.*;public class Peer {  public final static long BCAST_PEER = -1;  public final static long BCAST_INIT = 0;  public final static long BCAST_MIN = 1;  static Vector Peers = new Vector();  static Hashtable PeerTab = new Hashtable();  static String my_addr;  public static void main( String [] args ) {    int port = 0;    int join_port = 0;    int len;    Socket s;    ServerSocket ss;    InetAddress addr;    String st, src, cmd, msg, join;    Scanner sc;    try {      if( args.length < 3 ) {        sc = new Scanner( System.in );        System.out.print( "Enter port to listen on: " );        if( sc.hasNextInt() ) {	  port = sc.nextInt();          sc.nextLine();        }        System.out.print( "Enter peer's address to join to: " );        join = sc.nextLine();        if( join.length() > 1 ) {          System.out.print( "Enter peer's port to join to: " );          if( sc.hasNextInt() ) {            join_port = sc.nextInt();            sc.nextLine();          }        }      } else {        port = Integer.parseInt( args[0] );        join = args[1];        if( join.length() > 1 ) {          join_port = Integer.parseInt( args[2] );        }      }      if( ( port < 1024 ) || ( port > 32767 ) ) {        System.out.println( "Bad port specified" );        return;      }      ss = new ServerSocket( port );      addr = InetAddress.getLocalHost();      my_addr = addr.getHostAddress() + ":" + port;      System.out.println( "I am at: " + my_addr );      if( join.length() > 1 ) {         if( ( join_port < 1024 ) || ( join_port > 32767 ) ) {           System.out.println( "Bad join port specified" );           return;         }         // Join the network         System.out.println( "Joining" );         join( join, join_port );      }      // Enter listen loop      System.out.println( "Listening" );      while( true ) {        try {          s = ss.accept();          sc = new Scanner( read( s ) );          cmd = sc.next();          src = sc.next();          if( cmd.equals( "JOIN" ) ) {            welcome( s, src );          } else if( cmd.equals( "BCAST" ) ) {            bcast( sc.nextLong(), sc.nextLine(), src );          }          s.close();        } catch ( Exception e ) {           System.out.println( "Continuing after exception: " + e );        }      }    } catch ( Exception e ) {      System.out.println( e );    }  }  static void join( String host, int port ) {    String st;    Socket s;    Scanner sc;    try {      s = new Socket( host, port );      write( s, "JOIN " + my_addr );      st = read( s );      if( st != null ) {        sc = new Scanner( st );        while( sc.hasNext() ) {          addPeer( sc.next() );        }      }      s.close();    } catch ( Exception e ) {      System.out.println( e );      System.exit( 0 );    }  }  static void welcome( Socket s, String src ) {    int i;    int size = Peers.size();    String peer;    String resp = my_addr;    for( i = 0; i < size; i++ ) {      peer = (String) Peers.elementAt( i );      if( !peer.equals( src ) ) {        resp = resp + " " + peer;      }    }    write( s, resp );    bcast( BCAST_PEER, src, src );  }  static boolean addPeer( String peer ) {    if( PeerTab.get( peer ) == null ) {      Peers.add( peer );      PeerTab.put( peer, new SockAddr( peer ) );      return true;    }    return false;  }  public static boolean write( Socket s, String st ) {    OutputStream out;    try {      out = s.getOutputStream();      out.write( st.getBytes( "US-ASCII" ) );      out.write( 0 );      out.flush();      return true;    } catch ( Exception e ) {      System.out.println( e );      return false;    }  }  public static String read( Socket s ) {    InputStream in;    byte [] b = new byte[65536];    int len;    try {      in = s.getInputStream();      for( len = 0; in.read( b, len, 1 ) == 1; len++ ) {        if( b[len] == 0 ) {          return new String( b, 0, len, "US-ASCII" );        }      }    } catch ( Exception e ) {      System.out.println( e );    }    return null;  }  static void bcast( long time, String msg, String src ) {    Thread t;    String peer, payload;    int i, size;    SockAddr sa;    if( msg.charAt( 0 ) == ' ' ) {      msg = msg.substring( 1 );    }    if( time == BCAST_PEER ) {       if( !addPeer( msg ) ) {        return;      }    } else {      time = MsgTab.add( time, msg );      if( time < BCAST_MIN ) {        return;      }      System.out.println( "[" + my_addr + "] " + msg );    }     payload = "BCAST " + my_addr + " " + time + " " + msg;    size = Peers.size();    for( i = 0; i < size; i++ ) {      peer = (String) Peers.elementAt( i );      if( !peer.equals( src ) ) {        sa = (SockAddr) PeerTab.get( peer );        if( ( sa != null ) && sa.active ) {          t = new Thread( new Sender( sa, payload ) );          t.start();        }      }    }  }  private static class MsgTab {    final static long EXPIRY = 60000; // 1 minute expiry    static MsgTab head;    static MsgTab tail;    static Hashtable map = new Hashtable();    MsgTab next;    String payload;    long time;    public static long add( long time, String msg ) {      Date d;      MsgTab m;      long expiry;      String payload = time + " " + msg;      if( ( time != BCAST_INIT ) && map.get( payload ) != null ) {        return 0;      }      d = new Date();      m = new MsgTab();      m.time = d.getTime();      if( time == BCAST_INIT ) {        time = m.time;        m.payload = time + " " + msg;      } else {        m.payload = payload;      }        if( head == null ) {        head = m;      } else {        tail.next = m;      }      tail = m;      map.put( m.payload, m );        expiry = m.time - EXPIRY;      while( ( head != null ) && ( head.time < expiry ) ) {        map.remove( head.payload );        head = head.next;      }          return time;    }  }  static class SockAddr {    String addr = null;    int port = 0;    boolean active = false;    SockAddr( String peer ) {      String [] parts;      try {        parts = peer.split( ":" );        addr = parts[0];        port = Integer.parseInt( parts[1] );        active = true;      } catch ( Exception e ) {        System.out.println( e );        active = false;      }    }   }  static class Sender implements Runnable {    SockAddr sockaddr;    String payload;       Sender( SockAddr sa, String p ) {      sockaddr = sa;      payload = p;    }    public void run() {      Socket s;      try {        s = new Socket( sockaddr.addr, sockaddr.port );        write( s, payload );        s.close();      } catch ( Exception e ) {        sockaddr.active = false;      }    }  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜爽夜夜爽精品视频| 国产日韩综合av| 亚洲成人av福利| 欧美日精品一区视频| 一区二区欧美国产| 欧美久久一二区| 青青草原综合久久大伊人精品 | 成人听书哪个软件好| 欧美激情中文字幕一区二区| 成人动漫中文字幕| 亚洲精品成人精品456| 欧美色图一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 精品国产91乱码一区二区三区| 韩国欧美国产1区| 国产精品视频麻豆| 欧美午夜影院一区| 黄色精品一二区| 国产精品天干天干在线综合| 91成人在线观看喷潮| 日本美女视频一区二区| 国产三级精品视频| 欧美视频一区二| 国产黄色成人av| 亚洲国产精品一区二区www在线| 91精品国产乱| 韩国成人福利片在线播放| 中文字幕一区二区三区不卡在线| 欧美午夜在线一二页| 国产呦萝稀缺另类资源| 亚洲精品国产无天堂网2021| 日韩欧美国产综合一区| 99精品久久久久久| 另类的小说在线视频另类成人小视频在线 | 亚洲愉拍自拍另类高清精品| 日韩一区二区影院| 成人app网站| 美女www一区二区| 亚洲激情欧美激情| 久久蜜桃一区二区| 欧美精三区欧美精三区| 成人av在线播放网址| 蜜臀久久久久久久| 一区二区三区高清不卡| 国产日韩精品久久久| 日韩精品影音先锋| 91福利视频网站| 成人动漫在线一区| 国产麻豆成人精品| 日韩激情视频网站| 一区二区三区不卡视频| 久久婷婷色综合| 日韩亚洲电影在线| 欧美日韩美女一区二区| 91在线云播放| 成人精品视频一区二区三区尤物| 热久久久久久久| 亚洲超丰满肉感bbw| 亚洲美女偷拍久久| 国产精品久久久久久久久久久免费看 | 69av一区二区三区| 欧美综合天天夜夜久久| av高清不卡在线| 国产成人在线网站| 国内久久精品视频| 精品一区二区av| 久久精品国产亚洲高清剧情介绍| 亚洲va国产天堂va久久en| 亚洲精品ww久久久久久p站| 中文字幕在线不卡一区| 国产精品色哟哟网站| 中文一区一区三区高中清不卡| 久久久久国产免费免费| wwwwxxxxx欧美| 久久一区二区三区四区| 久久久久久麻豆| 欧美国产乱子伦| 久久久国产一区二区三区四区小说 | 97久久精品人人做人人爽50路| 粉嫩久久99精品久久久久久夜| 国产在线精品一区二区 | 国产不卡在线一区| 国产成人av电影在线观看| 国产尤物一区二区| 成人免费黄色大片| 91在线免费播放| 色婷婷综合久久久久中文一区二区 | 亚洲人成亚洲人成在线观看图片| 国产欧美视频在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 久久免费电影网| 国产精品视频yy9299一区| 国产精品久久久久影院| 亚洲欧美另类小说| 午夜视频一区二区| 蜜臀久久99精品久久久画质超高清| 毛片av一区二区| 国产91丝袜在线观看| 91丨porny丨中文| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩免费不卡视频一区二区三区| 91精品国产欧美一区二区成人| 精品精品国产高清a毛片牛牛| 久久精品无码一区二区三区| 国产精品久久毛片| 五月婷婷色综合| 国产剧情一区在线| 在线亚洲高清视频| 日韩欧美国产成人一区二区| 久久精品一区二区三区av| 综合久久给合久久狠狠狠97色| 亚洲成人一区在线| 国产综合色在线| 91福利小视频| 久久夜色精品一区| 一卡二卡三卡日韩欧美| 国内精品免费在线观看| 91色porny在线视频| 69av一区二区三区| 国产精品久久久久久久久免费相片 | 欧美日韩高清在线| 国产日产欧美一区| 亚洲成人精品影院| 成人性视频网站| 欧美日韩中文字幕一区二区| 久久一区二区三区四区| 亚洲国产综合91精品麻豆| 国产一区免费电影| 欧美精选在线播放| 亚洲欧洲三级电影| 寂寞少妇一区二区三区| 91视频观看视频| 久久久不卡网国产精品二区 | 91麻豆精品91久久久久久清纯| 国产精品久久久久精k8| 蜜桃av噜噜一区二区三区小说| 91麻豆免费看片| 日韩欧美亚洲一区二区| 一区二区视频在线| 风流少妇一区二区| 日韩精品一区二区三区在线 | 日韩免费性生活视频播放| 亚洲色图一区二区| 粉嫩在线一区二区三区视频| 欧美精品 日韩| 亚洲精品视频自拍| 成人av在线资源网站| 久久久综合激的五月天| 麻豆精品一二三| 欧美高清hd18日本| 亚洲最新在线观看| 99久久久久免费精品国产| 久久精品一级爱片| 看电影不卡的网站| 欧美精品丝袜久久久中文字幕| 亚洲免费在线播放| 91美女在线视频| 中文字幕一区二区三中文字幕| 国产成人av电影在线观看| 久久久久综合网| 久久国产精品色| 精品裸体舞一区二区三区| 美洲天堂一区二卡三卡四卡视频| 欧美日韩第一区日日骚| 亚洲成人综合网站| 欧美群妇大交群中文字幕| 天天亚洲美女在线视频| 欧美日韩国产高清一区| 午夜精品一区在线观看| 欧美剧情电影在线观看完整版免费励志电影| 亚洲天堂网中文字| 色婷婷久久久亚洲一区二区三区| 亚洲精品乱码久久久久久久久| 91小宝寻花一区二区三区| 中文字幕在线不卡一区二区三区| 99re视频这里只有精品| 亚洲免费色视频| 欧美日韩精品久久久| 亚洲永久免费av| 51午夜精品国产| 黄网站免费久久| 国产精品久久久久久久蜜臀| 99re66热这里只有精品3直播| 一区二区三区免费看视频| 欧美日韩国产天堂| 久久精品国产澳门| 国产欧美一区二区精品仙草咪| 成人深夜视频在线观看| 亚洲色图视频免费播放| 欧美理论在线播放| 久久成人免费网站| 欧美激情综合在线| 色婷婷亚洲综合| 日本麻豆一区二区三区视频| 久久免费电影网| 色婷婷久久一区二区三区麻豆| 丝袜诱惑制服诱惑色一区在线观看| 日韩欧美精品三级| 成人午夜在线免费| 亚洲国产欧美在线|