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

Java實現(xiàn)在線聊天功能

 更新時間:2022年09月15日 10:31:03   作者:Lete樂特  
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)在線聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現(xiàn)在線聊天功能的具體代碼,供大家參考,具體內(nèi)容如下

效果

關(guān)鍵代碼

創(chuàng)建Client.java

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
?* @author Lete
?* @樂特的程序永無BUG
?* @createDate 2020- 07-04 22:13
?*
?* 1. SendThread 發(fā)送消息線程
?* 2. RecieveThread 接受消息線程
?*/
public class Client {
? ? public static void main(String[] args) {

? ? ? ? try {
? ? ? ? ? ? // 創(chuàng)建8888端口
? ? ? ? ? ? Socket s = new Socket("127.0.0.1", 8888);

? ? ? ? ? ? // 啟動發(fā)送消息線程
? ? ? ? ? ? new SendThread(s).start();
? ? ? ? ? ? // 啟動接受消息線程
? ? ? ? ? ? new RecieveThread(s).start();

? ? ? ? } catch (UnknownHostException e) {
? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

創(chuàng)建Server.java

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
?* @author Lete
?* @樂特的程序永無BUG
?* @createDate 2020- 07-04 22:13
?*
?* 1. SendThread 發(fā)送消息線程
?* 2. RecieveThread 接受消息線程
?*/
public class Server {
? ? public static void main(String[] args) {
? ? ? ? try {

? ? ? ? ? ? // 監(jiān)聽8888端口
? ? ? ? ? ? ServerSocket ss = new ServerSocket(8888);

? ? ? ? ? ? System.out.println("監(jiān)聽在端口號:8888");
? ? ? ? ? ? Socket s = ss.accept();

? ? ? ? ? ? //啟動發(fā)送消息線程
? ? ? ? ? ? new SendThread(s).start();
? ? ? ? ? ? //啟動接受消息線程
? ? ? ? ? ? new RecieveThread(s).start();

? ? ? ? } catch (IOException e) {
? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }
}

創(chuàng)建RecieveThread.java

import java.io.*;
import java.net.Socket;

/**
?* @author Lete
?* @樂特的程序永無BUG
?* @createDate 2020- 07-04 22:13
?*
?* 1. SendThread 發(fā)送消息線程
?* 2. RecieveThread 接受消息線程
?*/
public class RecieveThread extends Thread {

? ? private Socket s;

? ? public RecieveThread(Socket s) {
? ? ? ? this.s = s;
? ? }

? ? public void run() {
? ? ? ? try {

? ? ? ? ? ? // 接收對方輸入的內(nèi)容
? ? ? ? ? ? InputStream is = s.getInputStream();
? ? ? ? ? ? DataInputStream dis = new DataInputStream(is);

? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? String msg = dis.readUTF();
? ? ? ? ? ? ? ? System.out.println(msg);
? ? ? ? ? ? }
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }

}

創(chuàng)建SendThread.java

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
?* @author Lete
?* @樂特的程序永無BUG
?* @createDate 2020- 07-04 22:13
?*
?* 1. SendThread 發(fā)送消息線程
?* 2. RecieveThread 接受消息線程
?*/
public class SendThread extends Thread {

? ? private Socket s;

? ? public SendThread(Socket s) {
? ? ? ? this.s = s;
? ? }

? ? public void run() {
? ? ? ? try {

? ? ? ? ? ? // 獲取輸入的內(nèi)容
? ? ? ? ? ? OutputStream os = s.getOutputStream();
? ? ? ? ? ? DataOutputStream dos = new DataOutputStream(os);

? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? ? ? ? ? String str = sc.next();
? ? ? ? ? ? ? ? dos.writeUTF(str);
? ? ? ? ? ? }
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }

}

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

相關(guān)文章

  • RocketMQ消息重試機制原理分析講解

    RocketMQ消息重試機制原理分析講解

    這篇文章主要介紹了RocketMQ消息重試機制,消息的發(fā)送和消費并不是百分百成功的,在出現(xiàn)消息推送失敗時,RocketMQ有何補償方式來進行消息重試呢?這是我們今天要一起學(xué)習(xí)的點
    2023-02-02
  • SpringBoot?自定義starter?yaml提示失效問題及解決方法

    SpringBoot?自定義starter?yaml提示失效問題及解決方法

    在自定義starter后,必不可少會有properties配置參數(shù)需要指定,而在有時又不知道為什么出現(xiàn)這個問題,這篇文章主要介紹了SpringBoot?自定義starter?yaml提示失效問題,需要的朋友可以參考下
    2022-12-12
  • Java 自動安裝校驗TLS/SSL證書

    Java 自動安裝校驗TLS/SSL證書

    這篇文章主要介紹了Java 自動安裝校驗TLS/SSL證書的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Spring Boot集成MyBatis的方法

    Spring Boot集成MyBatis的方法

    今天小編就為大家分享一篇關(guān)于Spring Boot集成MyBatis的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處詳解

    JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處詳解

    這篇文章主要給大家介紹了關(guān)于JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • java泛型常用通配符實例解析

    java泛型常用通配符實例解析

    這篇文章主要介紹了java泛型常用通配符實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Spring?Boot配置內(nèi)容加密實現(xiàn)敏感信息保護

    Spring?Boot配置內(nèi)容加密實現(xiàn)敏感信息保護

    之前我們講過的配置相關(guān)知識都是Spring?Boot原生就提供的,而今天我們將介紹的功能并非Spring?Boot原生就支持,但卻非常有用:配置內(nèi)容的加密
    2021-11-11
  • java實現(xiàn)題目以及選項亂序的方法實例

    java實現(xiàn)題目以及選項亂序的方法實例

    這篇文章主要給大家介紹了關(guān)于java實現(xiàn)題目以及選項亂序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能

    使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能

    這篇文章主要介紹了如何使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的朋友們下面隨著小編來一起來學(xué)習(xí)吧
    2024-01-01
  • Java對象在JVM中的生命周期詳解

    Java對象在JVM中的生命周期詳解

    這篇文章主要介紹了Java對象在JVM中的生命周期詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論

东山县| 崇明县| 金乡县| 法库县| 邢台县| 南涧| 辽中县| 讷河市| 嘉善县| 定安县| 珠海市| 凌海市| 云安县| 富顺县| 寻甸| 沙田区| 周口市| 三河市| 洛隆县| 遵义县| 酒泉市| 抚州市| 定结县| 赫章县| 玛多县| 濮阳市| 七台河市| 元谋县| 南郑县| 调兵山市| 全州县| 开化县| 宁国市| 广宗县| 嫩江县| 化州市| 广饶县| 密云县| 吉首市| 台北县| 双辽市|