Server:
<!---->package ChatIV;
import java.net.*;
import java.io.*;
import java.util.*;
//广播聊天室服务端
public class Server {
public static void main(String args[]){
try {
ServerSocket ss = new ServerSocket(8186);//实现Socket
List sockets = new ArrayList();//创建一个集合,保存文字消息
while(true){
Socket s = ss.accept();//监听8186
sockets.add(s);//向集合中添加Socket的对象S,把听到的内容保存到集合中
Thread t1 = new ChatThread(s,sockets);//线程
t1.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ChatThread extends Thread{
Socket s;
List sockets;
public ChatThread(Socket s,List sockets){
this.s=s;
this.sockets=sockets;
}
public void run(){
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream()));//包装成字符流
while(true){
String str = in.readLine();//读BufferedReader
for(int i=0;i<sockets.size();i++){//利用For循环遍历集合
Socket s2 = (Socket)sockets.get(i);//创建Socket对象S2,强转成Socket,并获取下标
PrintWriter out = new PrintWriter(s2.getOutputStream());//文本流输出
out.println(str);//打印字符
out.flush();//刷新该流的缓冲
}
}
} catch (IOException e) {}
finally{
try {
s.close();
} catch (IOException e) {}
}
}
}
Client:
<!---->package ChatIV;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//广播聊天室客户端
public class Client {
JTextArea jta;
JTextField jtf;
BufferedReader in;
PrintWriter out;
//Swing画一个界面
private void initGUI(){
JFrame f=new JFrame("Client");
f.setSize(400,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jta=new JTextArea();
jta.setEditable(false);
f.add(new JScrollPane(jta));
jtf=new JTextField();
f.add(jtf,"South");
f.setVisible(true);
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
String text=jtf.getText();
jtf.setText("");
out.println(text);
out.flush();
}
});
}
//连接初始化
private void initNet(){
try {
Socket s = new Socket("127.0.0.1",8186);//创建Socket端口8186,端口号随意,避免常用端口即可
out = new PrintWriter(s.getOutputStream());//文本流输出,利用Socket对象获得getOutputStream()
in = new BufferedReader(new InputStreamReader(s.getInputStream()));//包装成字符流
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//消息接收
private void receive(){
try {
while(true){
String str = in.readLine();//读BufferedReader
if(str==null){
return ;
}
jta.append("说"+str+"\n");//加载到JTextArea中,显示
}
} catch (IOException e) {
e.printStackTrace();
}
}
private Client(){
this.initGUI();
this.initNet();
}
public static void main(String args[]){
Client c = new Client();
c.receive();
}
}
分享到:
相关推荐
JavaSocket实现多人聊天室.pdf
javaSocket带界面聊天室
用 JavaSocket 编程开发聊天室 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 可以实现群聊(聊天记录显示在所有客户端界面)。 完成好友列表在...
用JavaSocket编程开发聊天室。 目的或任务:通过指导学生上机实践,对JavaSocket编程、Java多线程、Java图形用户界面进行掌握。 基本要求: 1.了解实验目的及实验原理; 2.编写程序,并附上程序代码和结果图; 3....
用Java编写的聊天室,客户端和服务端都有界面,能够完成登录、私聊、群聊、发图片、抖动等功能,资源里面有完整代码和使用说明书。
chat 本项目是一个基于java开发 使用socket技术,c/s架构 实现的一个简单的聊天室系统 系统实现了基本的聊天功能,添加了登陆注册和文件的发送和接受功能 本项目也是我的毕业设计
JavaSocket聊天室实现_源码
服务端知识进行连接 之后调用服务端的线程 服务端并没有大的改动,在原有的基础上加上线程池, 客户端界面只有简单的传一个...调用客户端的方法,方法中有线程,线程中进行socket的链接,这样才能实现多个文件的传输。
Java课程大作业JavaSocket聊天室实现源码+项目说明.7z 【实现功能】 用Java图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 可以实现群聊(聊天记录显示在所有...
1. 用Java图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 2. 可以实现群聊(聊天记录显示在所有客户端界面)。 3. 完成好友列表在各个客户端上显示。 4. 可以...
javasocket使用TCP协议实现的聊天室.pdf
基于javaSocket聊天室 服务器可以给所有或单个用户发消息,用户可以向服务器发送文件。
javaSocket聊天室
运行环境windows,软件eclipse或者myeclipse,先运行服务器,再运行客户端,客户端可以多次运行即运行多个用户。
一个用java做的简单类似于QQ,飞鸽的局域网聊天系统
基于JavaSocket多客户端并发通信聊天程序的设计与实现..pdf基于JavaSocket多客户端并发通信聊天程序的设计与实现..pdf基于JavaSocket多客户端并发通信聊天程序的设计与实现..pdf基于JavaSocket多客户端并发通信聊天...
基于JavaSocket多客户端并发通信聊天程序的设计与实现..docx基于JavaSocket多客户端并发通信聊天程序的设计与实现..docx基于JavaSocket多客户端并发通信聊天程序的设计与实现..docx基于JavaSocket多客户端并发通信...
用java语言 Socket Thread 实现的 聊天室 例子。分为Server、Client端,先运行Server,再运行Client
详见http://blog.csdn.net/hit_rxz/article/details/39433687#t14
用户聊天界面=new ChatArea("",listTable,width,height-(h+5)); 用户聊天界面.setVisible(false); 提示条=new Label("正在连接到服务器,请稍等...",Label.CENTER); 提示条.setForeground(Color.red); north=new...