最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java使用UDP實(shí)現(xiàn)多人聊天功能

 更新時(shí)間:2022年02月11日 09:11:41   作者:木子_muzi  
這篇文章主要為大家詳細(xì)介紹了java使用UDP實(shí)現(xiàn)多人聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用UDP實(shí)現(xiàn)簡(jiǎn)單聊天功能,供大家參考,具體內(nèi)容如下

使用UDP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多人聊天功能。該程序使用了多線程,實(shí)現(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)建一個(gè)報(bào)文,于與接收
? ? ? ? ? ? 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ù)報(bào)文
? ? ? ? ? ? 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();
? ? }
}

運(yùn)行結(jié)果:

這里實(shí)現(xiàn)的是兩人聊天,想要實(shí)現(xiàn)多人聊天只需要將接受地址改成廣播地址即可。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解Spring中ResponseEntity包裝器的使用

    一文詳解Spring中ResponseEntity包裝器的使用

    在?Spring?中,ResponseEntity?是?HTTP?響應(yīng)的包裝器,這篇文章主要為大家詳細(xì)介紹了ResponseEntity包裝器的使用,感興趣的可以了解一下
    2025-02-02
  • Spring中的@Conditional注解實(shí)現(xiàn)分析

    Spring中的@Conditional注解實(shí)現(xiàn)分析

    這篇文章主要介紹了Spring中的@Conditional注解實(shí)現(xiàn)分析,  @Conditional是Spring 4出現(xiàn)的注解,但是真正露出價(jià)值的是Spring Boot的擴(kuò)展@ConditionalOnBean等,需要的朋友可以參考下
    2023-12-12
  • 使用Spring從YAML文件讀取內(nèi)容映射為Map方式

    使用Spring從YAML文件讀取內(nèi)容映射為Map方式

    這篇文章主要介紹了使用Spring從YAML文件讀取內(nèi)容映射為Map方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot 快速實(shí)現(xiàn) api 加密的方法

    SpringBoot 快速實(shí)現(xiàn) api 加密的方法

    在項(xiàng)目中,為了保證數(shù)據(jù)的安全,我們常常會(huì)對(duì)傳遞的數(shù)據(jù)進(jìn)行加密,常用的加密算法包括對(duì)稱加密(AES)和非對(duì)稱加密(RSA),本文給大家介紹SpringBoot 快速實(shí)現(xiàn) api 加密,感興趣的朋友一起看看吧
    2023-10-10
  • C#中NAudio音頻庫(kù)的安裝與使用教程詳解

    C#中NAudio音頻庫(kù)的安裝與使用教程詳解

    NAudio為.NET平臺(tái)下的開源庫(kù),采用ML-PL協(xié)議,它支持許多音頻操作,可實(shí)現(xiàn)多種API播放與錄制、多種不同音頻格式等功能,下面就跟隨小編一起學(xué)習(xí)一下NAudio的安裝與使用吧
    2023-11-11
  • Java8中常見函數(shù)式接口的使用示例詳解

    Java8中常見函數(shù)式接口的使用示例詳解

    在 Java 8 中,函數(shù)式接口是一個(gè)關(guān)鍵的特性,它們?cè)试S將方法作為參數(shù)傳遞或返回類型,本文為大家整理了一些常見的函數(shù)式接口的使用,希望對(duì)大家有所幫助
    2023-12-12
  • 淺談圖片上傳利用request.getInputStream()獲取文件流時(shí)遇到的問(wèn)題

    淺談圖片上傳利用request.getInputStream()獲取文件流時(shí)遇到的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談圖片上傳利用request.getInputStream()獲取文件流時(shí)遇到的問(wèn)題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Maven解決jar包版本沖突的4種方法詳解

    Maven解決jar包版本沖突的4種方法詳解

    這篇文章主要給大家介紹了關(guān)于Maven解決jar包版本沖突的4種方法代碼,maven工程要導(dǎo)入jar包的坐標(biāo),就必須要考慮解決jar包沖突,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java位集合之BitMap實(shí)現(xiàn)和應(yīng)用詳解

    Java位集合之BitMap實(shí)現(xiàn)和應(yīng)用詳解

    這篇文章主要介紹了Java位集合之BitMap實(shí)現(xiàn)和應(yīng)用的相關(guān)資料,BitMap是一種高效的數(shù)據(jù)結(jié)構(gòu),適用于快速排序、去重和查找等操作,通過(guò)簡(jiǎn)單的數(shù)組和位運(yùn)算,可以在Java中實(shí)現(xiàn)BitMap,從而節(jié)省存儲(chǔ)空間并提高性能,需要的朋友可以參考下
    2024-12-12
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    這篇文章主要介紹了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

郧西县| 元谋县| 永靖县| 嫩江县| 肇源县| 景洪市| 奉节县| 唐海县| 锦屏县| 淄博市| 乡城县| 兖州市| 凤山市| 横山县| 时尚| 肃北| 鹤岗市| 镇康县| 涿州市| 富阳市| 历史| 林芝县| 博客| 三都| 通河县| 吴江市| 潼关县| 绥德县| 饶平县| 德昌县| 临泉县| 靖宇县| 道孚县| 宝清县| 黎平县| 松江区| 永川市| 马边| 泽州县| 通许县| 临澧县|