国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 舟曲县| 屏边| 巴塘县| 揭阳市| 嘉义县| 永修县| 双城市| 永城市| 蓝田县| 铁岭县| 大洼县| 依兰县| 镇平县| 哈尔滨市| 广丰县| 定西市| 仪征市| 上饶县| 桐城市| 通化县| 怀柔区| 青神县| 安溪县| 长丰县| 彭水| 都江堰市| 治县。| 丰宁| 霞浦县| 临桂县| 正安县| 封开县| 昭通市| 当雄县| 山丹县| 北安市| 原平市| 巴塘县| 绥德县| 武城县| 辽中县|