最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基于socket實(shí)現(xiàn)簡易聊天室實(shí)例

 更新時間:2015年05月29日 12:46:36   作者:wo_soul  
這篇文章主要介紹了Java基于socket實(shí)現(xiàn)簡易聊天室的方法,實(shí)例分析了java基于socket實(shí)現(xiàn)聊天室服務(wù)端與客戶端的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了Java基于socket實(shí)現(xiàn)簡易聊天室的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

chatroomdemo.java

package com.socket.demo; 
import java.io.IOException; 
import java.net.DatagramSocket; 
public class ChatRoomDemo { 
  /** 
   * @param args 
   * @throws IOException 
   */ 
  public static void main(String[] args) throws IOException { 
    System.out.println("----進(jìn)入聊天室----"); 
    DatagramSocket send = new DatagramSocket(); 
    DatagramSocket rece = new DatagramSocket(10001); 
    new Thread(new SendDemo(send)).start();// 啟動發(fā)送端線程 
    new Thread(new ReceiveDemo(rece)).start();// 啟動接收端線程 
  } 
}

SendDemo.java

package com.socket.demo; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
public class SendDemo implements Runnable { 
  private DatagramSocket ds; 
  // 有參數(shù)構(gòu)造函數(shù) 
  public SendDemo(DatagramSocket ds) { 
    this.ds = ds; 
  } 
  @Override 
  public void run() { 
    try { 
      BufferedReader bufr = new BufferedReader(new InputStreamReader( 
          System.in)); 
      String line = null; 
      while ((line = bufr.readLine()) != null) { 
        byte[] buf = line.getBytes(); 
        /* 
         * //192.168.1.255是ip段廣播地址,發(fā)給這個IP的信息, 
         * 在192.168.1.1-192.168.1.255的ip段的所有IP地址都能收到消息 
         */ 
        DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.255"), 10001);
        ds.send(dp); 
        if ("886".equals(line)) 
          break; 
      } 
      ds.close(); 
    } catch (Exception e) { 
    } 
  } 
}

ReceiveDemo.java

package com.socket.demo; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
public class ReceiveDemo implements Runnable { 
  private DatagramSocket ds; 
  public ReceiveDemo(DatagramSocket ds) { 
    this.ds = ds; 
  } 
  @Override 
  public void run() { 
    try { 
      while (true) { 
        // 2,創(chuàng)建數(shù)據(jù)包。 
        byte[] buf = new byte[1024]; 
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        // 3,使用接收方法將數(shù)據(jù)存儲到數(shù)據(jù)包中。 
        ds.receive(dp);// 阻塞式的。 
        // 4,通過數(shù)據(jù)包對象的方法,解析其中的數(shù)據(jù),比如,地址,端口,數(shù)據(jù)內(nèi)容。 
        String ip = dp.getAddress().getHostAddress(); 
        int port = dp.getPort(); 
        System.out.println("----port-----" + port); 
        String text = new String(dp.getData(), 0, dp.getLength()); 
        System.out.println(ip + "::" + text); 
        if (text.equals("886")) { 
          System.out.println(ip + "....退出聊天室"); 
        } 
      } 
    } catch (Exception e) { 
    } 
  } 
}

運(yùn)行效果圖如下:

希望本文所述對大家的java程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論

鄂托克前旗| 乡宁县| 天门市| 正安县| 安图县| 西华县| 黔东| 朝阳区| 靖边县| 特克斯县| 东乡县| 曲阜市| 丰台区| 南部县| 云南省| 湘潭市| 云南省| 宁德市| 安化县| 武胜县| 恩平市| 博白县| 上栗县| 奇台县| 通山县| 剑川县| 瑞安市| 嘉禾县| 左贡县| 称多县| 凌云县| 项城市| 巴林左旗| 科技| 卢湾区| 安庆市| 临江市| 新沂市| 大兴区| 巴里| 保靖县|