java實(shí)現(xiàn)簡易聊天功能
本文實(shí)例為大家分享了java實(shí)現(xiàn)簡易聊天功能的具體代碼,供大家參考,具體內(nèi)容如下
應(yīng)用客戶端和服務(wù)端通過控制臺的輸入輸出實(shí)現(xiàn)簡易聊天功能
思路:
1.創(chuàng)建服務(wù)端類ChatServerThread和客戶端類ChatClientThradd
2.創(chuàng)建發(fā)送類Sendlmpl和接收類Receivelmpl
3.在服務(wù)端類中監(jiān)聽8888號端口,并開啟發(fā)送和接收線程
4.在客戶端類中連接8888號端口并開啟發(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號端口
? ? ? ? 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號端口
? ? ? ? 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)容,希望對大家的學(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)文章
Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號的方法詳解
在某個(gè)論壇下用戶可以隨意留言,為了防止不法分子在網(wǎng)上任意沖浪,需要對一些敏感詞匯進(jìn)行一些校驗(yàn),所以這篇文章給大家介紹了Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號的方法,需要的朋友可以參考下2024-03-03
SpringBoot實(shí)現(xiàn)簡單的日志鏈路追蹤
隨著分布式應(yīng)用的普及,現(xiàn)在的一些應(yīng)用系統(tǒng)不再像以前,所有的文件(前后端程序)都打包在一個(gè)包中,本文通過一個(gè)簡單的SpringBoot應(yīng)用來總結(jié),我們?nèi)绾螌⑷罩敬?lián)起來,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10
Java+Selenium實(shí)現(xiàn)文件上傳下載功能詳解
這篇文章主要介紹了java代碼如何利用selenium操作瀏覽器上傳和下載文件功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-01-01
JAVA時(shí)間戳-Calendar類使用(包括set,get,add方法)
這篇文章主要介紹了JAVA時(shí)間戳-Calendar類使用(包括set,get,add方法),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
Java 8 動(dòng)態(tài)類型語言Lambda表達(dá)式實(shí)現(xiàn)原理解析
Java 8支持動(dòng)態(tài)語言,看到了很酷的Lambda表達(dá)式,對一直以靜態(tài)類型語言自居的Java,讓人看到了Java虛擬機(jī)可以支持動(dòng)態(tài)語言的目標(biāo)。接下來通過本文給大家介紹Java 8 動(dòng)態(tài)類型語言Lambda表達(dá)式實(shí)現(xiàn)原理分析,需要的朋友可以參考下2017-02-02

