java-多线程聊天
来源:互联网 发布:单片机按键电路的作用 编辑:程序博客网 时间:2024/06/16 04:37
这是一个基于控制台的多线程聊天程序,感觉在线程这块代码可以优化下
话不多说,直接贴出代码
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;/** * 客户端 * @author Administrator * */public class Client {public static void main(String[] args) {Socket client = null;try {client = new Socket("127.0.0.1", 9999);// 发送消息Thread out = new Thread(new Output(client));out.start();// 接受消息Thread in = new Thread(new Input(client));in.start();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/** * 客户端的接收线程 * @author Administrator * */class Input implements Runnable {private Socket client;private BufferedReader br;public Input(Socket client) {try {br = new BufferedReader(new InputStreamReader(client.getInputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {while (true) {char[] msg = new char[2048];try {br.read(msg);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("服务器:" + String.valueOf(msg));}}}/** * 客户端的发送线程 * @author Administrator * */class Output implements Runnable {private Socket client = null;private BufferedWriter bw = null;Scanner sc = new Scanner(System.in);public Output(Socket client) {try {bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}String info = null;@Overridepublic void run() {while (info != "exit") {try {System.out.println("请输入消息: ");info = sc.nextLine();bw.write(info);bw.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
<pre name="code" class="java">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;import java.util.Scanner;/** * 服务器端 * * @author Administrator * */public class Server {public static void main(String[] args) {ServerSocket server = null;try {server = new ServerSocket(9999);System.out.println("服务器已启动。。。。。。。。。");Socket socket = server.accept();System.out.println("客户机上线了!");// 读取客户端的消息Thread out = new Thread(new SOutput(socket));out.start();// 向客户端发送消息Thread in = new Thread(new SInput(socket));in.start();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("服务器启动失败。。。。。。。。。");}}}/** * 服务器的接收线程 * @author Administrator * */class SInput implements Runnable {private Socket client;private BufferedReader br;public SInput(Socket client) {try {br = new BufferedReader(new InputStreamReader(client.getInputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {while (true) {char[] msg = new char[2048];try {br.read(msg);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("客户端:" + String.valueOf(msg));}}}/** * 服务器的发送线程 * @author Administrator * */class SOutput implements Runnable {private Socket client = null;private BufferedWriter bw = null;Scanner sc = new Scanner(System.in);public SOutput(Socket client) {try {bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {while (true) {System.out.println("请输入消息: ");String info = sc.nextLine();try {bw.write(info);bw.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
0 0
- java-多线程聊天
- Java多线程聊天对话框
- JAVA简单多线程一对一聊天
- java多线程模拟聊天问题
- 【java】多线程小例子-聊天
- Java网络编程:多线程聊天
- Java网络----Socket, 多线程实现内网多人聊天及一对一聊天
- JAVA 多线程实现聊天(UDP通信 )
- java多线程多人聊天的server
- java 多线程,socket 简单模拟聊天软件
- java多线程socket实现简单的聊天
- JAVA 多线程实现简单UDP一对一聊天
- java多线程服务器,实现客户端间聊天
- 多线程聊天
- 多线程聊天
- 【Java】Java多线程实现的聊天客户端和服务器
- Java Socket 编程——多线程网络聊天程序
- Java Socket 编程——多线程网络聊天程序
- 【POJ】Power of Cryptography
- ThinkPhp插入数据到数据库
- [Java]--Java static keyword – Class, Method, Variable, Block, import
- 结构体的存储分配
- HDU3001 三进制的状压dp
- java-多线程聊天
- linux下配置jre
- HTML基础
- 安卓加壳实例--解密部分放入JNI
- es6新特性概述
- 缘分天空之我的Kafka入门
- 通俗的理解卷积概念
- No resource found that matches the given name 'Theme.AppCompat.Light'
- es6 中的箭头符号