哎呀,还有点不会用,刚明白怎么添加图片,最仅这两天会吧以前做过的东西传到这上面来,希望大家关注
服务器端的代码
import java.awt.BorderLayout;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class chatServer extends JFrame {
private static JTextArea jta = new JTextArea();
private ServerSocket server;
private static List<Socket> list = new ArrayList<Socket>();
private ExecutorService exec;
public chatServer(){
setLayout(new BorderLayout());
add(new JScrollPane(jta),BorderLayout.CENTER);
setTitle("聊天室服务器");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try{
server = new ServerSocket(54321);
exec = Executors.newCachedThreadPool();
jta.append("服务器已经启动");
Socket client = null;
while(true){
client =server.accept();
list.add(client);
exec.execute(new Task(client));
}
}catch(Exception e){
}
}
static class Task implements Runnable{
private Socket client;
private DataInputStream fromclient;
private DataOutputStream toclient;
String msg;
public Task(Socket client) throws IOException{
this.client = client;
fromclient = new DataInputStream(client.getInputStream());
}
public void run() {
try{
while((msg=fromclient.readUTF())!=null){
msg = "["+client.getPort()+"]说:"+msg;
jta.append(msg+"\n");
sendMessage();
}
}catch(Exception e){
}
}
public void sendMessage() throws IOException{
for(Socket client:list){
toclient= new DataOutputStream(client.getOutputStream());
toclient.writeUTF(msg);
}
}
}
public static void main(String[] args){
new chatServer();
}
}
客户端的实现代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class newClient extends JFrame{
private JPanel p= new JPanel();
private JTextField jtf1 = new JTextField();
private JTextArea jta1 = new JTextArea();
private DataOutputStream toserver ;
private DataInputStream fromserver;
private JButton button = new JButton("发送");
public newClient(){
p.setLayout(new BorderLayout());
JPanel p2 = new JPanel();
p2.setLayout(new BorderLayout());
p2.add(jtf1,BorderLayout.CENTER);
p2.add((new JLabel("NND 你一定不要忘了曾经的承诺和坚持")),BorderLayout.SOUTH);
p2.add(button,BorderLayout.EAST);
p.add(p2,BorderLayout.SOUTH);
p.add(jta1,BorderLayout.CENTER);
this.setTitle("最简单的聊天室-----antking");
this.add(p);
this.setSize(500,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
button.addActionListener(new buttonListener());
try {
Socket client = new Socket("localhost",54321);
toserver = new DataOutputStream(client.getOutputStream());
fromserver = new DataInputStream(client.getInputStream());
while(true){
String msg =fromserver.readUTF();
if(msg!=null)
jta1.append(msg+"\n");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private class buttonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String str = jtf1.getText().toString();
try {
toserver.writeUTF(str);
toserver.flush();
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public static void main(String[] args) {
new newClient();
}
}
分享到:
相关推荐
【标题】"简单聊天室实现"揭示了一个编程项目,它基于Beetle库构建了一个基本的聊天室应用程序。Beetle通常是一个用C#编写的高性能Socket TCP组件,旨在简化网络通信,特别是对于实时和高吞吐量的应用场景。在这个...
首先,让我们理解标题"**C# - 简易聊天室实现网页**"所涉及的核心概念。C#是微软推出的一种面向对象的编程语言,其设计目标是提高软件开发的生产力,特别是在.NET平台上。ASP.NET是.NET框架的一部分,用于构建Web...
这个简易聊天室的实现为初学者提供了一个网络编程的实用案例,帮助他们理解网络通信的基本概念,如IP通信、端口绑定、消息的发送和接收等。尽管这个聊天室的功能比较简单,但它为构建更复杂的网络应用打下了良好的...
简单聊天室实现】是一个基于QT客户端技术的项目,主要目标是构建一个基本的在线聊天平台,让用户能够进行实时的文本交流。在这个项目中,QT客户端库扮演了核心角色,它提供了丰富的功能和易用的API,使得开发者可以...
总结起来,"Java写的简易聊天室"项目涵盖了以下关键知识点: 1. Java的Socket网络编程,包括 `ServerSocket` 和 `Socket` 类。 2. 客户端与服务器之间的连接建立和断开过程。 3. 使用线程处理客户端的并发连接。 4....
本项目"基于nio的简易聊天室"旨在通过NIO技术实现一个简单的聊天室服务端和客户端,其特点是有图形用户界面(GUI)供用户交互。 NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。在这...
在Linux环境下,构建一个简单的聊天室是一个典型的网络编程任务,主要涉及到UDP(User Datagram Protocol)协议的应用。UDP是一种无连接的、不可靠的传输层协议,适合于对实时性要求较高但对数据完整性要求不那么...
本文将深入探讨如何实现一个名为"ChatRoom"的简易聊天室,基于描述中的源代码。 首先,我们需要了解聊天室的基本功能:用户注册、登录、发送消息、接收消息以及退出聊天室。这些功能的实现通常涉及到以下几个技术点...
**JSP实现简单的聊天室** 在Web开发领域,JavaServer Pages (JSP) 是一种用于构建动态网页的技术,它允许开发者将HTML代码与Java代码相结合,以实现服务器端的业务逻辑处理。本项目以"JSP实现简单的聊天室"为例,...
Java课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zip...
在本文中,我们将深入探讨如何构建一个简单的Android聊天室应用,以及它与PC服务器端和客户端的交互。这个"Android简易版聊天室"项目旨在提供一个基础架构,用于理解多平台间实时通信的工作原理。 首先,我们要理解...
Java 实现简易聊天室 本文将对 Java 实现简易聊天室的设计和实现进行详细的分析和讲解。该聊天室程序主要由五个 Java 源文件组成,即 Server.java、Objecting.java、LogIn.java、ClientUser.java 和 Client.java。...
在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...
聊天室实现 本文主要介绍了基于 Java 语言的聊天室系统的设计和实现。该系统主要由登录页面、验证页面、聊天室页面、离开页面、查看聊客页面、帮助页面等页面构成。整个设计简洁明了、实用,使用简单。本系统实现了...
实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...
【简易聊天室(asp.net实现)】 在信息技术领域,构建一个在线聊天室是常见的实践项目,它可以帮助开发者熟练掌握Web应用程序的设计与实现。本项目基于ASP.NET和C#语言,旨在提供一个简单、实用的实时通信平台。ASP...
在本项目中,"简单的聊天室C#(asp.net)"是一个使用C#语言和ASP.NET框架构建的网络应用程序,旨在实现一个基本的在线聊天功能。这个项目包含了多个小实验和一个综合实验,覆盖了从基础到进阶的ASP.NET开发技术。...
(1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 ...
本文将深入探讨如何基于C语言构建一个简易聊天室,这是一个非常实用的基础项目,可以帮助初学者更好地理解和掌握网络编程的基本概念。 首先,我们要了解的是TCP/IP协议族,它是互联网通信的基础。在C语言中,我们...
对于QT中QTcpServer和QTcpSocket的应用,最简单化的逻辑代码设计,附带打包程序,总代码少的批爆,适合初学和参考手册用。