Java單線程程序?qū)崿F(xiàn)實(shí)現(xiàn)簡(jiǎn)單聊天功能
信息發(fā)送
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class May {
public static void main(String[] args) {
// 單線程程序
try {
ServerSocket socket = new ServerSocket(2233);//端口號(hào)
Socket soc = socket.accept();
// 讀取信息
BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));
PrintWriter out = new PrintWriter(soc.getOutputStream());
while (true) {
// 發(fā)送
System.out.println("發(fā)送:");
String msg = new Scanner(System.in).nextLine();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
out.println(String.format("[%s]:%s\r\n", "服務(wù)器", msg));
out.flush();
// 接收
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收信息并回復(fù)
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class Max {
public static void main(String[] args) {
try {
Socket s = new Socket("localhost",2233);//鏈接端口號(hào)
String sc = s.getInetAddress().getHostAddress();//獲取IP
// 讀取信息
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream());
while (true) {
// 接收
System.out.println(br.readLine());
// 發(fā)送
System.out.println("發(fā)送:");
String msg = new Scanner(System.in).nextLine();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
out.println(String.format("[%s]:%s\r\n", sc, msg));
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
發(fā)送你好

接收你好并回復(fù)
[/code]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java生成32位16進(jìn)制密鑰的代碼實(shí)現(xiàn)
在許多加密和安全應(yīng)用中,生成隨機(jī)的密鑰是至關(guān)重要的一步,密鑰通常以16進(jìn)制形式表示,并且具有特定的長(zhǎng)度,在這篇博客中,我們將探討如何使用Java生成一個(gè)32位長(zhǎng)度的16進(jìn)制密鑰,并展示詳細(xì)的代碼示例和運(yùn)行結(jié)果,需要的朋友可以參考下2024-08-08
Spring Security攔截器引起Java CORS跨域失敗的問題及解決
這篇文章主要介紹了Spring Security攔截器引起Java CORS跨域失敗的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot實(shí)現(xiàn)自定義Redis的連接的流程步驟
Spring Boot 自定義 Redis 主要是指在基于 Spring Boot 的應(yīng)用程序中,當(dāng)你需要更深入地控制或擴(kuò)展對(duì) Redis 數(shù)據(jù)庫的操作,而不是僅僅依賴 Spring Data Redis 的默認(rèn)配置,本文給大家介紹了SpringBoot實(shí)現(xiàn)自定義Redis的連接的流程步驟,需要的朋友可以參考下2024-09-09
Spring使用注解進(jìn)行引用類型的自動(dòng)裝配逐步分析
自動(dòng)裝配是springboot的核心,一般提到自動(dòng)裝配就會(huì)和springboot聯(lián)系在一起。實(shí)際上Spring Framework早就實(shí)現(xiàn)了這個(gè)功能。Spring Boot只是在其基礎(chǔ)上,通過SPI的方式,做了進(jìn)一步優(yōu)化2023-03-03
SpringBoot整合WebSocket實(shí)現(xiàn)聊天室流程全解
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。本文將通過SpringBoot集成WebSocket實(shí)現(xiàn)簡(jiǎn)易聊天室,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-01-01
Hibernatede 一對(duì)多映射配置方法(分享)
下面小編就為大家?guī)硪黄狧ibernatede 一對(duì)多映射配置方法(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
Springboot導(dǎo)入本地jar后 打包依賴無法加入的解決方案
這篇文章主要介紹了Springboot導(dǎo)入本地jar后 打包依賴無法加入的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
springboot封裝響應(yīng)實(shí)體的實(shí)例代碼
這篇文章主要介紹了springboot封裝響應(yīng)實(shí)體,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Java線程讓步y(tǒng)ield用法實(shí)例分析
這篇文章主要介紹了Java線程讓步y(tǒng)ield用法,結(jié)合實(shí)例形式分析了java中yield()方法的功能、原理及線程讓步操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-09
mybatis?example如何自動(dòng)生成代碼?排序語句
這篇文章主要介紹了mybatis?example如何自動(dòng)生成代碼?排序語句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

