服务器端代码:
package com.cw.threadtest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class ChatServer {
/**
* @param args
*/
public static void main(String[] args) {
ServerSocket ss=null;
try {
ss = new ServerSocket(9100);
} catch (IOException e) {
e.printStackTrace();
}
List list = new ArrayList();
while(true){
try {
Socket s = ss.accept();
list.add(s);
Thread t = new ChatServerThread(s,list);
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ChatServerThread extends Thread{
Socket socket ;
List list;
BufferedReader in ;
public ChatServerThread(Socket socket, List list) {
super();
this.socket = socket;
this.list = list;
}
@Override
public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String text = in.readLine();
if (text==null)break;
for(int i=0;i<list.size();i++){
Socket socket2 = (Socket) list.get(i);
PrintWriter out = new PrintWriter(socket2.getOutputStream());
out.println(text);
out.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
list.remove(socket);
}
}
}
客户端
package com.cw.threadtest;
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 ChatClient {
JFrame frame ;
JTextField jtf ;
JTextArea jta;
BufferedReader in ;
PrintWriter out;
public ChatClient() {
frame = new JFrame("");
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtf = new JTextField();
jta = new JTextArea();
frame.add(jtf,"South");
frame.add(new JScrollPane(jta));
jta.setEditable(false);
frame.setVisible(true);
Socket s;
try {
s =new Socket("192.168.1.11",9100);
out = new PrintWriter(s.getOutputStream());
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
String text = jtf.getText();
jtf.setText("");
out.println(text);
out.flush();
}
});
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void receiveText(){
while(true){
try {
String text = in.readLine();
jta.append(text+"\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ChatClient cc = new ChatClient();
cc.receiveText();
}
}
分享到:
相关推荐
在本项目中,"java swing 做的QQ聊天程序"是一个基于Java Swing实现的简易即时通讯应用,允许用户在局域网内进行聊天。它具备了基本的聊天功能,如注册、登录等,适合初学者学习和理解网络通信及GUI编程。 1. **...
Java Swing聊天小程序是一款基于Java Socket、线程和TCP协议实现的简单通信应用。在这个程序中,用户可以通过图形用户界面(GUI)进行实时的文本聊天。下面我们将深入探讨这些关键技术点。 1. **Java Socket**: ...
Swing聊天程序是一款由初学者开发的Java应用程序,它展示了如何使用Swing库构建一个简单的聊天室界面。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的图形用户界面(GUI)组件,使得开发者能够创建出...
这个“Java基于Swing实现的简单聊天室,支持多人在线闲谈.zip”文件是一个示例项目,展示了如何利用Swing构建一个基本的多用户聊天应用。下面将详细阐述其涉及的关键知识点。 1. **Swing组件**:Swing提供了丰富的...
总的来说,"java多线程+Socket+Swing做的局域网聊天程序"是一个综合性的项目,涵盖了Java基础、网络编程以及GUI设计等多个方面,对于学习和理解Java应用开发具有很高的实践价值。通过这样的项目,开发者可以提升对...
在这个项目中,我们将探讨如何利用Java Swing来实现一个简单的聊天室功能。 首先,我们要理解Java Swing的基本概念。Swing是一个轻量级的GUI工具包,它提供了许多组件,如按钮(JButton)、文本框(JTextField)、...
不过,这个源码仍然可以作为学习Swing GUI编程和TCP通信的一个实例,帮助开发者理解如何结合使用这两个技术来构建一个简单的聊天应用。 在实际开发中,为了实现一个完整的聊天应用,还需要考虑更多方面,如安全性...
java swing 基于TCP的简单聊天室程序,可以修改服务器端主机地址的,支持在线人数实时显示,可以群聊也可以私聊。
在这个项目中,"Java swing实现简单的C/S聊天及文件传输系统"是利用Swing构建一个客户端/服务器(Client/Server)架构的聊天和文件传输应用。这个系统允许用户通过网络进行文本聊天并交换文件。以下是关于这个项目的...
在这个聊天室应用中,开发者利用Swing的强大功能来设计和实现了一个简易但实用的交互式聊天环境。 首先,让我们深入了解一下Java的Swing库。Swing是Java Foundation Classes (JFC)的一部分,它提供了比早期的AWT...
在这个"聊天室程序swing源码.rar"中,我们可以预见到一个基于Swing构建的简单聊天应用,它可能包含客户端和服务器端两部分。 Swing的优点在于它提供了比Java AWT(Abstract Window Toolkit)更丰富的组件和更现代的...
Java简易聊天程序是一种基于Java编程语言实现的交互式通信应用,它允许用户通过网络进行文本聊天。这个程序的核心概念和关键技术主要包括多线程、网络编程、输入/输出流以及简单的用户界面设计。以下是对这些关键...
【Swing聊天室】是一个基于Java Swing库实现的简单在线交流平台。Swing是Java标准版(Java SE)的一部分,提供了丰富的用户界面组件,用于构建桌面应用程序。在这个聊天室项目中,用户可以通过客户端进行文字交流,...
Swing聊天室是一款基于Java Swing库开发的桌面应用程序,它为用户提供了一个实时交流的平台。在Swing聊天室中,用户可以与其他在线用户进行文本聊天,实现简单的社交功能。Swing是Java的一个图形用户界面(GUI)工具...
8. **用户界面**:简单的聊天程序可能使用命令行界面,而更复杂的版本可能使用图形用户界面(GUI),如Java的Swing或JavaFX库。这些库提供组件如文本框、按钮等,用于用户交互。 9. **协议**:聊天程序可能基于特定...
【标题】:“简单的聊天程序 有界面的” 这个标题表明我们正在讨论的是一个设计用于基本交互的聊天应用程序,它具有用户界面,使得用户能够直观地进行沟通。在IT领域,这样的程序通常涉及到图形用户界面(GUI)的...
【标题】"简单的聊天程序"揭示了这是一个基于Java编程语言构建的初级聊天应用程序。这个程序设计用于在两台计算机之间进行一对一的实时通信,提供基本的文本消息传递功能。通过这个程序,用户可以理解如何使用Java来...
在这个“java swing简单版qq”项目中,开发者利用Swing构建了一个基础的即时通讯应用,模拟了QQ的基本功能,如聊天和更换皮肤。下面我们将深入探讨Java Swing以及如何使用它来实现这样的应用程序。 首先,Swing是...
本文主要讲解Android平台下使用Socket实现简单聊天小程序的知识点,通过一个简单易懂的例子,使大家明白怎么使用socket。在这个例子中,我们将学习如何使用Java语言编写服务器端和客户端程序,并了解多线程的用法。 ...
在本文中,我们将深入探讨如何使用Java Swing、Socket和数据库技术构建一个简易的聊天室应用。这个聊天室实现了群聊、私聊以及好友列表的实时更新功能,为初学者提供了一个很好的学习实例。 首先,Java Swing是Java...