千家信息网

12.6-全栈Java笔记:Java网络编程(四)

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活。本节课我们讲解如何在服务器和客户端之间实现聊天室~需要思考的问题:服务器端:一个线程专门发送消息,一个线程专门
千家信息网最后更新 2026年11月02日12.6-全栈Java笔记:Java网络编程(四)

上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活。

本节课我们讲解如何在服务器和客户端之间实现聊天室~

需要思考的问题:

服务器端:一个线程专门发送消息,一个线程专门接收消息。

客户端:一个线程专门发送消息,一个线程专门接收消息。

除了消化这段代码外,还需要思考,怎么实现一个聊天室!(难度较大!!)

【示例1】聊天室服务器端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class ChatServer {

public static void main(String[] args) {

ServerSocket server=null;

Socket socket=null;

BufferedReader in=null;

try {

server = new ServerSocket(8888);

socket=server.accept();

new ServerThread(socket).start();

//main线程负责读取客户端发来的信息

in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

while(true){

String str=in.readLine();

System.out.println("客户端说:"+str);

}

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 专门向客户端发送消息的线程

* @author Administrator

*

*/

class ServerThread extends Thread {

Socket ss;

BufferedWriter out;

BufferedReader br;

public ServerThread(Socket ss){

this.ss = ss;

try {

out=new BufferedWriter(new OutputStreamWriter(ss.getOutputStream()));

br = new BufferedReader(new InputStreamReader(System.in));

} catch (IOException e) {

e.printStackTrace();

}

}

public void run(){

try {

while(true){

String str2 = br.readLine();

out.write(str2+"\n");

out.flush();

}

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

【示例2】聊天室客户端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class ChatClient {

public static void main(String[] args) {

Socket socket = null;

BufferedReader in = null;

try {

socket=new Socket(InetAddress.getByName("192.168.1.32"),8888);

new ClientThread(socket).start();

in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

//main线程负责接收服务器发来的信息

while(true){

System.out.println("服务器说:"+in.readLine());

}

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 用于向服务器发送消息

* @author Administrator

*

*/

class ClientThread extends Thread{

Socket s;

BufferedWriter out;

BufferedReader wt;

public ClientThread(Socket s){

this.s = s;

try {

out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

wt=new BufferedReader(new InputStreamReader(System.in));

} catch (IOException e) {

e.printStackTrace();

}

}

public void run(){

try {

while(true){

String str = wt.readLine();

out.write(str+"\n" );

out.flush();

}

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

wt.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}





「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop




客户 客户端 服务器 线程 服务 消息 聊天室 笔记 工程师 高级 信息 前端 工程 框架 示例 软件 开发 较大 不够 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 科技金融是不是互联网金融 中国互联网科技股 厦门中拓互联网络科技有限公司 互联网未来科技 凡科互联网科技 致聘互联网科技 互联网前沿科技 佰商互联网科技有限公司 青岛中康互联网医疗科技有限公司 央行互联网金融科技公司 厦门比较好的科技互联网公司 上海宁丞科技互联网 宜昌元轩互联网科技有限公司 高科技互联网发展前景如何 保险科技服务互联网营销体系 下一代互联网重大应用科技园 互联网科技博主张洲 互联网科技对化妆品行业 恒生科技互联网指数十大成分股 互联网科技未来 互联网巨头投资的硬核科技 小米互联网科技园设置 呼和浩特新华互联网科技学院 互联网金融科技名词解释 黑科技 体验场景 互联网大会 2021世界互联网领先科技成果发布 福州德业互联网科技 湖北辰鑫科技互联网 科技信息时代互联网发展
0