Java基于socket實(shí)現(xiàn)簡(jiǎn)易聊天室實(shí)例
本文實(shí)例講述了Java基于socket實(shí)現(xiàn)簡(jiǎ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();// 啟動(dòng)發(fā)送端線程
new Thread(new ReceiveDemo(rece)).start();// 啟動(dòng)接收端線程
}
}
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ù)存儲(chǔ)到數(shù)據(jù)包中。
ds.receive(dp);// 阻塞式的。
// 4,通過(guò)數(shù)據(jù)包對(duì)象的方法,解析其中的數(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)行效果圖如下:

希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。
- 使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁(yè)聊天室實(shí)例代碼
- java socket實(shí)現(xiàn)聊天室 java實(shí)現(xiàn)多人聊天功能
- java聊天室的實(shí)現(xiàn)代碼
- java實(shí)現(xiàn)一個(gè)簡(jiǎn)單TCPSocket聊天室功能分享
- 基于java編寫局域網(wǎng)多人聊天室
- Java Socket聊天室編程(一)之利用socket實(shí)現(xiàn)聊天之消息推送
- Java基于UDP協(xié)議實(shí)現(xiàn)簡(jiǎn)單的聊天室程序
- Java Socket聊天室編程(二)之利用socket實(shí)現(xiàn)單聊聊天室
- 使用java基于pushlet和bootstrap實(shí)現(xiàn)的簡(jiǎn)單聊天室
- Java編寫實(shí)現(xiàn)多人聊天室
相關(guān)文章
RabbitMQ中Confirm消息確認(rèn)機(jī)制保障生產(chǎn)端消息的可靠性詳解
這篇文章主要介紹了RabbitMQ中Confirm消息確認(rèn)機(jī)制保障生產(chǎn)端消息的可靠性詳解,生產(chǎn)者將數(shù)據(jù)發(fā)送到 RabbitMQ 的時(shí)候,可能數(shù)據(jù)就在半路給搞丟了,因?yàn)榫W(wǎng)絡(luò)問(wèn)題啥的,都有可能,需要的朋友可以參考下2023-12-12
JavaWeb實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)數(shù)據(jù)的添加和刪除
這篇文章主要介紹了如何利用JavaWeb實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)數(shù)據(jù)的添加和刪除功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作
這篇文章主要介紹了IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
java設(shè)計(jì)模式之代理模式(Porxy)詳解
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之代理模式Porxy的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
java通過(guò)isAccessAllowed方法實(shí)現(xiàn)訪問(wèn)控制
在Web應(yīng)用開(kāi)發(fā)中,使用Apache Shiro框架的isAccessAllowed方法可以有效管理用戶的訪問(wèn)權(quán)限,本文詳細(xì)解析了該方法的實(shí)現(xiàn)過(guò)程,包括用戶身份驗(yàn)證、權(quán)限判斷和安全性分析,下面就一起來(lái)了解一下2024-09-09
Spring Cloud Stream如何實(shí)現(xiàn)服務(wù)之間的通訊
這篇文章主要介紹了Spring Cloud Stream如何實(shí)現(xiàn)服務(wù)之間的通訊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
MybatisPlus結(jié)合groupby實(shí)現(xiàn)分組和sum求和的步驟
這篇文章主要介紹了MybatisPlus結(jié)合groupby實(shí)現(xiàn)分組和sum求和的步驟,這次使用的是LambdaQueryWrapper,使用QueryWrapper相對(duì)來(lái)說(shuō)簡(jiǎn)單點(diǎn)就不寫了,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2023-12-12
EntityWrapper如何在and條件中嵌套o(hù)r語(yǔ)句
這篇文章主要介紹了EntityWrapper如何在and條件中嵌套o(hù)r語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java對(duì)時(shí)間的簡(jiǎn)單操作實(shí)例
這篇文章主要介紹了Java對(duì)時(shí)間的簡(jiǎn)單操作,實(shí)例分析了針對(duì)java.util.Date的各類常見(jiàn)操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

