知识大全 java多线程控制台聊天室
Posted 消息
篇首语:不要以为你的努力徒劳无功,权当做磨练你的意志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java多线程控制台聊天室相关的知识,希望对你有一定的参考价值。
package tf thread;
import java io BufferedReader;
import java io IOException;
import java io InputStreamReader;
import java io PrintWriter;
import ServerSocket;
import Socket;
import java util ArrayList;
import java util List;
import ncurrent ExecutorService;
import ncurrent Executors;
public class ChatServer
private static final int PORT = ; // 端口号
private static List<Socket> list = new ArrayList<Socket>(); // 保存连接对象
private ExecutorService exec;
private ServerSocket server;
public static void main(String[] args)
new ChatServer();
public ChatServer()
try
server = new ServerSocket(PORT);
exec = Executors newCachedThreadPool();
System out println( 服务器已启动! );
Socket client = null;
while (true)
client = server accept(); // 接收客户连接
list add(client);
exec execute(new ChatTask(client));
catch (IOException e)
e printStackTrace();
static class ChatTask implements Runnable
private Socket socket;
private BufferedReader br;
private PrintWriter pw;
private String msg;
public ChatTask(Socket socket) throws IOException
this socket = socket;
br = new BufferedReader(new InputStreamReader(socket
getInputStream()));
msg = 【 + this socket getInetAddress() + 】进入聊天室!当前聊天室有【
+ list size() + 】人 ;
sendMessage();
public void run()
try
while ((msg = br readLine()) != null)
if (msg trim() equals( bye ))
list remove(socket);
br close();
pw close();
msg = 【 + socket getInetAddress() + 】离开聊天室!当前聊天室有【
+ list size() + 】人 ;
socket close();
sendMessage();
break;
else
msg = 【 + socket getInetAddress() + 】说 + msg;
sendMessage();
catch (IOException e)
e printStackTrace();
/**
* 群发消息给聊天室的所有人
*/
private void sendMessage() throws IOException
System out println(msg);
for (Socket client : list)
pw = new PrintWriter(client getOutputStream() true);
pw println(msg);
package tf thread;
import java io BufferedReader;
import java io InputStreamReader;
import java io PrintWriter;
import Socket;
import ncurrent ExecutorService;
import ncurrent Executors;
public class ChatClient
private static final int PORT = ;
private static ExecutorService exec = Executors newCachedThreadPool();
public static void main(String[] args) throws Exception
new ChatClient();
public ChatClient()
try
Socket socket = new Socket( PORT);
exec execute(new Sender(socket));
System out
println( 【 + socket getInetAddress() + 】您好 欢迎来到阿飞聊天室! );
BufferedReader br = new BufferedReader(new InputStreamReader(socket
getInputStream()));
String msg;
while ((msg = br readLine()) != null)
System out println(msg);
catch (Exception e)
/**
* 客户端线程获取控制台输入消息
*/
static class Sender implements Runnable
private Socket socket;
public Sender(Socket socket)
this socket = socket;
public void run()
try
BufferedReader br = new BufferedReader(new InputStreamReader(
System in));
PrintWriter pw = new PrintWriter(socket getOutputStream() true);
String msg;
while (true)
msg = br readLine();
pw println(msg);
if (msg trim() equals( bye ))
pw close();
br close();
exec shutdownNow();
break;
catch (Exception e)
e printStackTrace();
cha138/Article/program/Java/gj/201311/27478
相关参考
Java多线程程序设计初步入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Java语言产生
浅析Java多线程程序设计机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程是Java语
Java多线程程序设计二十三个要点[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java多线程程序设计二十三个要点[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java多线程程序设计二十三个要点[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java多线程程序设计二十三个要点[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java控制台程序输入语句初探 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在java控制台程
知识大全 qq聊天记录和聊天的人都删除了,在另一台电脑上还看的得到吗
qq聊天记录和聊天的人都删除了,在另一台电脑上还看的得到吗肯定看不到的,如果你曾经用手机上过的话,在手机上可能还能看到一部分我的qq聊天记录删除了,我想在另一台电脑上查看聊天记录,怎么办?聊天记录都是
编写一数据报通信程序实现简单的聊天功能 聊天内容和输入文本分别为当前聊天的历史信息和当前要传送出去的聊天文本确定清空退出三个按钮分别实现发送当前聊天文本清空当前聊天文本和退出系统的功能imp
JavaApplet编程技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JavaApplet