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)文章
Idea啟動(dòng)SpringBoot程序報(bào)錯(cuò):Veb server failed to&nbs
這篇文章主要介紹了Idea啟動(dòng)SpringBoot程序報(bào)錯(cuò):Veb server failed to start. Port 8082 was already in use;端口沖突的原理與解決方案,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10Spring?Boot中使用Swagger3.0.0版本構(gòu)建RESTful?APIs的方法
Swagger?是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化?RESTful?風(fēng)格的?Web?服務(wù),這篇文章主要介紹了Spring?Boot中使用Swagger3.0.0版本構(gòu)建RESTful?APIs的方法,需要的朋友可以參考下2022-11-11Spring聲明式事務(wù)@Transactional注解實(shí)現(xiàn)元數(shù)據(jù)驅(qū)動(dòng)的事務(wù)管理
這篇文章主要為大家介紹了Spring聲明式事務(wù)@Transactional注解實(shí)現(xiàn)元數(shù)據(jù)驅(qū)動(dòng)的事務(wù)管理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10springboot多模塊項(xiàng)目mvn打包遇到存在依賴(lài)但卻無(wú)法發(fā)現(xiàn)符號(hào)問(wèn)題
在SpringBoot多模塊項(xiàng)目中,如果遇到依賴(lài)存在但無(wú)法發(fā)現(xiàn)符號(hào)的問(wèn)題,常見(jiàn)原因可能是pom.xml配置問(wèn)題,例如,如果某個(gè)模塊僅作為依賴(lài)而不是啟動(dòng)工程,不應(yīng)在其pom中配置spring-boot-maven-plugin插件,因?yàn)檫@將影響jar包的生成方式2024-09-09Reactive Programming入門(mén)概念詳解
這篇文章主要為大家介紹了Reactive Programming入門(mén)概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Java反轉(zhuǎn)鏈表測(cè)試過(guò)程介紹
這篇文章主要介紹了Java反轉(zhuǎn)鏈表測(cè)試過(guò)程,學(xué)習(xí)過(guò)數(shù)據(jù)結(jié)構(gòu)的小伙伴們,對(duì)鏈表想來(lái)是并不陌生。本篇文章將為大家介紹幾種在Java語(yǔ)言當(dāng)中,實(shí)現(xiàn)鏈表反轉(zhuǎn)的幾種方法,以下是具體內(nèi)容2023-04-04關(guān)于Java集合框架Collection接口詳解
這篇文章主要介紹了關(guān)于Java集合框架Collection接口詳解,Collection接口是Java集合框架中的基礎(chǔ)接口,定義了一些基本的集合操作,包括添加元素、刪除元素、遍歷集合等,需要的朋友可以參考下2023-05-05Spring DATA JPA 中findAll 進(jìn)行OrderBy方式
這篇文章主要介紹了Spring DATA JPA 中findAll 進(jìn)行OrderBy方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11