package moreChat;
import java.io.*;
import java.net.Socket;
import java.util.concurrent.*;
public class ChatClient
{
private static final int PORT = 8888;
private static ExecutorService exec = Executors.newCachedThreadPool();
public ChatClient()
{
try
{
Socket socket = new Socket("localhost", 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)
{
e.printStackTrace();
}
}
/**
* 客户端线程获取控制台输入消息
*/
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();
}
}
}
public static void main(String[] args) throws Exception
{
new ChatClient();
}
}
package moreChat;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;
public class ChatServer
{
private static final int PORT = 8888; // 端口号
private static List<Socket> list = new ArrayList<Socket>(); // 保存连接对象
private ExecutorService exec;
private ServerSocket server;
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);
}
}
}
public static void main(String[] args)
{
new ChatServer();
}
}
分享到:
相关推荐
java 聊天室java 聊天室java 聊天室java 聊天室
java毕业设计——Java聊天室的设计与实现(论文+开题报告+答辩PPT+源代码+数据库+讲解视频).zip java毕业设计——Java聊天室的设计与实现(论文+开题报告+答辩PPT+源代码+数据库+讲解视频).zip java毕业设计——...
java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java 聊天室代码java ...
java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室.java聊天室....
Java聊天室程序源码 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7...
一共三种不同风格的聊天室,以三种不同的编程思想实现三种不同的效果。想学习java聊天室的朋友们行动了,绝对超值!
简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序简单的Java聊天室程序
java 聊天室登录界面
附SQLServer数据库的Java聊天室课程设计源码和文档,源代码完整,学习网络编程很不错的参考程序。界面像网页版 的聊天室,可对所有人发消息,聊天室的功能都基本具备了。源代码文件包括了:聊天系统登录程序、聊天...
Java聊天室(界面完整,群聊,私聊,用户列表,Socket),很完整的一个项目
用jsp写的聊天室,仅供学习参考。更多内容参考:http://blog.csdn.net/qq_19558705
java聊天室,利用线程池实现多用户聊天室
有详细的需求分析,代码逻辑清晰,思路明确,命名规范。是您学习Java聊天室项目的好帮手
JAVA聊天 室小代码JAVA聊天 室小代码JAVA聊天 室小代码
Java聊天室系统主要用于实现在线聊天,基本功能包括:服务端和客户端。本系统结构如下: (1)服务端: 1、能够开启和关闭服务器 2、等待着客户端从特殊端口发送的请求 3、监听的端口并不是固定的,服务端的...
java聊天室源码 socket java
java聊天室.,多人聊天 。
Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)Java聊天室程序(java)...
Java聊天室程序,Java聊天室程序,Java聊天室程序,Java聊天室程序
java 聊天室实现java 聊天室实现java 聊天室实现java 聊天室实现java 聊天室实现java 聊天室实现