java實(shí)現(xiàn)簡易聊天功能
本文實(shí)例為大家分享了java實(shí)現(xiàn)簡易聊天功能的具體代碼,供大家參考,具體內(nèi)容如下
應(yīng)用客戶端和服務(wù)端通過控制臺(tái)的輸入輸出實(shí)現(xiàn)簡易聊天功能
思路:
1.創(chuàng)建服務(wù)端類ChatServerThread和客戶端類ChatClientThradd
2.創(chuàng)建發(fā)送類Sendlmpl和接收類Receivelmpl
3.在服務(wù)端類中監(jiān)聽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)聽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ā)來的信息
? ? ? ? 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();
? ? ? ? ? ? }
? ? ? ? }
? ? }
}以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁聊天室實(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è)簡易在線聊天功能(一)
- Java基于socket實(shí)現(xiàn)簡易聊天室實(shí)例
- java Socket實(shí)現(xiàn)網(wǎng)頁版在線聊天
- java中UDP簡單聊天程序?qū)嵗a
- java實(shí)現(xiàn)一個(gè)簡單TCPSocket聊天室功能分享
- 基于java編寫局域網(wǎng)多人聊天室
相關(guān)文章
SpringCloud基于Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的問題小結(jié)
這篇文章主要介紹了SpringCloud基于Feign遠(yuǎn)程調(diào)用,通過使用 Feign 的方式,我們可以更加優(yōu)雅地進(jìn)行多參數(shù)的遠(yuǎn)程調(diào)用,避免了手動(dòng)拼接URL或構(gòu)建復(fù)雜的請(qǐng)求體,需要的朋友可以參考下2024-02-02
Spring5使用JSR 330標(biāo)準(zhǔn)注解的方法
從Spring3.0之后,除了Spring自帶的注解,我們也可以使用JSR330的標(biāo)準(zhǔn)注解,本文主要介紹了Spring5使用JSR 330標(biāo)準(zhǔn)注解,感興趣的可以了解一下2021-09-09
SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼
這篇文章主要介紹了SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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-09
Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個(gè)問題,同一天可以輸入多個(gè)時(shí)間段,但是每個(gè)時(shí)間段的時(shí)間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07
Maven中optional和scope元素的使用弄明白了嗎
這篇文章主要介紹了Maven中optional和scope元素的使用弄明白了嗎,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
maven?scope?provided和runtime的例子說明
這篇文章主要介紹了maven?scope?provided和runtime的例子說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

