java實(shí)現(xiàn)簡(jiǎn)易聊天功能
本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)易聊天功能的具體代碼,供大家參考,具體內(nèi)容如下
應(yīng)用客戶端和服務(wù)端通過(guò)控制臺(tái)的輸入輸出實(shí)現(xiàn)簡(jiǎn)易聊天功能
思路:
1.創(chuàng)建服務(wù)端類ChatServerThread和客戶端類ChatClientThradd
2.創(chuàng)建發(fā)送類Sendlmpl和接收類Receivelmpl
3.在服務(wù)端類中監(jiān)聽(tīng)8888號(hào)端口,并開啟發(fā)送和接收線程
4.在客戶端類中連接8888號(hào)端口并開啟發(fā)送和接收線程
5.在發(fā)送類中,開啟線程循環(huán),發(fā)送用戶輸入的信息
6.在接收類中,開啟線程循環(huán),接收網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)
代碼實(shí)現(xiàn)
服務(wù)端ChatServerThread
package test; import java.net.ServerSocket; import java.net.Socket; public class ?ChatServerThread{ ? ? //服務(wù)端 ? ? public static void main(String[] args) throws Exception{ ? ? ? ? ServerSocket serverSocket = new ServerSocket(8888); ? ? ? ? //監(jiān)聽(tīng)8888號(hào)端口 ? ? ? ? Socket socket = serverSocket.accept(); ? ? ? ? //開啟發(fā)送和接收線程 ? ? ? ? Sendlmpl sendlmpl=new Sendlmpl(socket); ? ? ? ? new Thread(sendlmpl).start(); ? ? ? ? Receivelmpl receivelmpl=new Receivelmpl(socket); ? ? ? ? new Thread(receivelmpl).start(); ? ? } }
客戶端ChatClientThradd
package test; import test.Receivelmpl; import test.Sendlmpl; import java.net.Socket; public class ChatClientThradd { ? ? //客戶端 ? ? public static void main(String[] args) throws Exception{ ? ? ? ? //連接8888號(hào)端口 ? ? ? ? Socket socket=new Socket("127.0.0.1",8888); ? ? ? ? //開啟發(fā)送和接收線程 ? ? ? ? Sendlmpl sendlmpl=new Sendlmpl(socket); ? ? ? ? new Thread(sendlmpl).start(); ? ? ? ? Receivelmpl receivelmpl=new Receivelmpl(socket); ? ? ? ? new Thread(receivelmpl).start(); ? ? } }
發(fā)送類Sendlmpl :
package test; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; public class Sendlmpl implements Runnable { ? ? //發(fā)送類 ? ? private Socket socket; ? ? public Sendlmpl(Socket socket) { ? ? ? ? this.socket = socket; ? ? } ? ? @Override ? ? public void run() { ? ? ? ? Scanner scanner = new Scanner(System.in); ? ? ? ? //線程循環(huán),發(fā)送用戶輸入的信息 ? ? ? ? while (true) { ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? OutputStream outputStream =socket.getOutputStream(); ? ? ? ? ? ? ? ? String string=scanner.nextLine(); ? ? ? ? ? ? ? ? outputStream.write(string.getBytes()); ? ? ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? } ? ? ? ? } ? ? } }
接收類Receivelmpl :
package test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Receivelmpl implements Runnable{ ? ? //接收類 ? ? private Socket socket; ? ? public Receivelmpl(Socket socket) { ? ? ? ? this.socket = socket; ? ? } ? ? @Override ? ? public void run() { ? ? ? ? //循環(huán)接收網(wǎng)絡(luò)發(fā)來(lái)的信息 ? ? ? ? while (true) { ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? InputStream inputStream=socket.getInputStream(); ? ? ? ? ? ? ? ? byte [] bytes=new byte[1024]; ? ? ? ? ? ? ? ? int z=inputStream.read(bytes); ? ? ? ? ? ? ? ? System.out.println(new String(bytes,0,z)); ? ? ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? } ? ? ? ? } ? ? } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用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)自動(dòng)回復(fù)聊天機(jī)器人
- 基于Java Socket實(shí)現(xiàn)一個(gè)簡(jiǎn)易在線聊天功能(一)
- Java基于socket實(shí)現(xiàn)簡(jiǎn)易聊天室實(shí)例
- java Socket實(shí)現(xiàn)網(wǎng)頁(yè)版在線聊天
- java中UDP簡(jiǎn)單聊天程序?qū)嵗a
- java實(shí)現(xiàn)一個(gè)簡(jiǎn)單TCPSocket聊天室功能分享
- 基于java編寫局域網(wǎng)多人聊天室
相關(guān)文章
SpringCloud基于Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的問(wèn)題小結(jié)
這篇文章主要介紹了SpringCloud基于Feign遠(yuǎn)程調(diào)用,通過(guò)使用 Feign 的方式,我們可以更加優(yōu)雅地進(jìn)行多參數(shù)的遠(yuǎn)程調(diào)用,避免了手動(dòng)拼接URL或構(gòu)建復(fù)雜的請(qǐng)求體,需要的朋友可以參考下2024-02-02JDBC程序更新數(shù)據(jù)庫(kù)中記錄的方法
這篇文章主要介紹了JDBC程序更新數(shù)據(jù)庫(kù)中記錄的方法,涉及Java基于JDBC操作數(shù)據(jù)庫(kù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Spring5使用JSR 330標(biāo)準(zhǔn)注解的方法
從Spring3.0之后,除了Spring自帶的注解,我們也可以使用JSR330的標(biāo)準(zhǔn)注解,本文主要介紹了Spring5使用JSR 330標(biāo)準(zhǔn)注解,感興趣的可以了解一下2021-09-09SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼
這篇文章主要介紹了SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05詳解使用Spring Security進(jìn)行自動(dòng)登錄驗(yàn)證
本篇文章主要介紹了詳解使用Spring Security進(jìn)行自動(dòng)登錄驗(yàn)證,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個(gè)問(wèn)題,同一天可以輸入多個(gè)時(shí)間段,但是每個(gè)時(shí)間段的時(shí)間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07Maven中optional和scope元素的使用弄明白了嗎
這篇文章主要介紹了Maven中optional和scope元素的使用弄明白了嗎,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12maven?scope?provided和runtime的例子說(shuō)明
這篇文章主要介紹了maven?scope?provided和runtime的例子說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12