Java基于socket實(shí)現(xiàn)簡易聊天室實(shí)例
本文實(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ā)給這個(gè)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ì)有所幫助。
- 使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁聊天室實(shí)例代碼
- java socket實(shí)現(xiàn)聊天室 java實(shí)現(xiàn)多人聊天功能
- java聊天室的實(shí)現(xiàn)代碼
- java實(shí)現(xiàn)一個(gè)簡單TCPSocket聊天室功能分享
- 基于java編寫局域網(wǎng)多人聊天室
- Java Socket聊天室編程(一)之利用socket實(shí)現(xiàn)聊天之消息推送
- Java基于UDP協(xié)議實(shí)現(xiàn)簡單的聊天室程序
- Java Socket聊天室編程(二)之利用socket實(shí)現(xiàn)單聊聊天室
- 使用java基于pushlet和bootstrap實(shí)現(xiàn)的簡單聊天室
- Java編寫實(shí)現(xiàn)多人聊天室
相關(guān)文章
Spring Cloud Gateway 獲取請求體(Request Body)的多種方法
這篇文章主要介紹了Spring Cloud Gateway 獲取請求體(Request Body)的多種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01MapReduce實(shí)現(xiàn)TopN效果示例解析
這篇文章主要為大家介紹了MapReduce實(shí)現(xiàn)TopN效果示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07淺析Java中靜態(tài)代理和動態(tài)代理的應(yīng)用與區(qū)別
代理模式在我們生活中很常見,而Java中常用的兩個(gè)的代理模式就是動態(tài)代理與靜態(tài)代理,這篇文章主要為大家介紹了二者的應(yīng)用與區(qū)別,需要的可以參考下2023-08-08spring-@Autowired注入與構(gòu)造函數(shù)注入使用方式
這篇文章主要介紹了spring-@Autowired注入與構(gòu)造函數(shù)注入使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Spring中的@ConditionalOnProperty注解使用詳解
這篇文章主要介紹了Spring中的@ConditionalOnProperty注解使用詳解,在 spring boot 中有時(shí)候需要控制配置類是否生效,可以使用 @ConditionalOnProperty 注解來控制 @Configuration 是否生效,需要的朋友可以參考下2024-01-01Reactor中的onErrorContinue?和?onErrorResume
這篇文章主要介紹了Reactor中的onErrorContinue?和?onErrorResume,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09Java使用Soap方式調(diào)用WebService接口代碼示例
Java調(diào)用WebService接口是指通過Java語言來訪問并與WebService進(jìn)行交互,WebService是一種基于Web的服務(wù)架構(gòu),它通過標(biāo)準(zhǔn)的XML和HTTP協(xié)議來提供服務(wù),這篇文章主要給大家介紹了關(guān)于Java使用Soap方式調(diào)用WebService接口的相關(guān)資料,需要的朋友可以參考下2024-03-03