java使用UDP實現(xiàn)多人聊天功能
使用UDP實現(xiàn)簡單聊天功能,供大家參考,具體內(nèi)容如下
使用UDP實現(xiàn)一個簡單的多人聊天功能。該程序使用了多線程,實現(xiàn)了聊天功能。
package 課后作業(yè).E103_10_聊天;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
//接收
class Receive implements Runnable{
? ? @Override
? ? public void run() {
? ? ? ? DatagramSocket receiveSocket = null;
? ? ? ? try {
? ? ? ? ? ? receiveSocket = new DatagramSocket(5200);
? ? ? ? } catch (SocketException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? while (true) {
? ? ? ? ? ? byte[] bytes = new byte[1024];
? ? ? ? ? ? //創(chuàng)建一個報文,于與接收
? ? ? ? ? ? DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
? ? ? ? ? ? //接收
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? receiveSocket.receive(datagramPacket);
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? ? ? InetAddress ip = datagramPacket.getAddress();
? ? ? ? ? ? System.out.println(ip.getHostName()+ new String(datagramPacket.getData()));
? ? ? ? }
? ? }
}
//發(fā)送
class Send implements Runnable{
? ? @Override
? ? public void run() {
? ? ? ? DatagramSocket sendSocket = null;
? ? ? ? try {
? ? ? ? ? ? sendSocket = new DatagramSocket();
? ? ? ? } catch (SocketException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? Scanner scan = new Scanner(System.in);
? ? ? ? while (true) {
? ? ? ? ? ? String str = scan.next();
? ? ? ? ? ? //要發(fā)送的信息
? ? ? ? ? ? byte[] bytes = str.getBytes();
? ? ? ? ? ? //發(fā)送的目標(biāo)地址
? ? ? ? ? ? InetAddress inetAddress = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? inetAddress = InetAddress.getByName("192.168.108.32");
? ? ? ? ? ? } catch (UnknownHostException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? ? ? //數(shù)據(jù)報文
? ? ? ? ? ? DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, inetAddress, 5200);
? ? ? ? ? ? //發(fā)送
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? sendSocket.send(datagramPacket);
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
public class Test {
? ? public static void main(String[] args) {
? ? ? ? Receive receive = new Receive();
? ? ? ? Thread thread = new Thread(receive);
? ? ? ? thread.start();
? ? ? ? Send send = new Send();
? ? ? ? Thread thread1 = new Thread(send);
? ? ? ? thread1.start();
? ? }
}運行結(jié)果:

這里實現(xiàn)的是兩人聊天,想要實現(xiàn)多人聊天只需要將接受地址改成廣播地址即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java實現(xiàn)基于UDP協(xié)議的聊天小程序操作
- Java網(wǎng)絡(luò)編程UDP實現(xiàn)消息發(fā)送及聊天
- Java網(wǎng)絡(luò)編程UDP實現(xiàn)多線程在線聊天
- java UDP實現(xiàn)一個聊天工具的示例代碼
- java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析
- Java基于UDP協(xié)議實現(xiàn)簡單的聊天室程序
- java中UDP簡單聊天程序?qū)嵗a
- 使用Java和WebSocket實現(xiàn)網(wǎng)頁聊天室實例代碼
- java聊天室的實現(xiàn)代碼
- java使用udp實現(xiàn)簡單多人聊天功能
相關(guān)文章
一文詳解Spring中ResponseEntity包裝器的使用
在?Spring?中,ResponseEntity?是?HTTP?響應(yīng)的包裝器,這篇文章主要為大家詳細介紹了ResponseEntity包裝器的使用,感興趣的可以了解一下2025-02-02
Spring中的@Conditional注解實現(xiàn)分析
這篇文章主要介紹了Spring中的@Conditional注解實現(xiàn)分析, @Conditional是Spring 4出現(xiàn)的注解,但是真正露出價值的是Spring Boot的擴展@ConditionalOnBean等,需要的朋友可以參考下2023-12-12
使用Spring從YAML文件讀取內(nèi)容映射為Map方式
這篇文章主要介紹了使用Spring從YAML文件讀取內(nèi)容映射為Map方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
SpringBoot 快速實現(xiàn) api 加密的方法
在項目中,為了保證數(shù)據(jù)的安全,我們常常會對傳遞的數(shù)據(jù)進行加密,常用的加密算法包括對稱加密(AES)和非對稱加密(RSA),本文給大家介紹SpringBoot 快速實現(xiàn) api 加密,感興趣的朋友一起看看吧2023-10-10
淺談圖片上傳利用request.getInputStream()獲取文件流時遇到的問題
下面小編就為大家?guī)硪黄獪\談圖片上傳利用request.getInputStream()獲取文件流時遇到的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Java位集合之BitMap實現(xiàn)和應(yīng)用詳解
這篇文章主要介紹了Java位集合之BitMap實現(xiàn)和應(yīng)用的相關(guān)資料,BitMap是一種高效的數(shù)據(jù)結(jié)構(gòu),適用于快速排序、去重和查找等操作,通過簡單的數(shù)組和位運算,可以在Java中實現(xiàn)BitMap,從而節(jié)省存儲空間并提高性能,需要的朋友可以參考下2024-12-12
SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)
這篇文章主要介紹了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

