国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 15:10:36
字體:
供稿:網(wǎng)友

本文實例講述了Java基于socket實現(xiàn)簡易聊天室的方法。分享給大家供大家參考。具體實現(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) {     }   } }

運行效果圖如下:

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 夏河县| 手游| 云霄县| 连城县| 韩城市| 开平市| 泰州市| 苏尼特右旗| 旺苍县| 秦皇岛市| 南安市| 邛崃市| 介休市| 拉萨市| 鲁甸县| 遵义县| 渑池县| 来安县| 呼伦贝尔市| 池州市| 温宿县| 建瓯市| 上杭县| 平邑县| 靖远县| 九江市| 云梦县| 岑巩县| 新龙县| 五指山市| 达日县| 新昌县| 丰宁| 温泉县| 霞浦县| 岑巩县| 岑巩县| 凌云县| 鱼台县| 晋中市| 汉寿县|