⑴ java聊天室
无数据库版本;
================================= Client =================================
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
@SuppressWarnings("serial")
public class ChatClient extends Frame {
TextField tfText = new TextField();
TextArea taText = new TextArea();
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
public static void main(String[] args) {
new ChatClient().launchFrame();
}
ChatClient() {
super("Chat Client v1.1");
}
public void launchFrame() {
setBounds(200, 200, 400, 300);
setResizable(false);
add(taText, BorderLayout.NORTH);
add(tfText, BorderLayout.SOUTH);
pack();
taText.setEditable(false);
tfText.addActionListener(new tfTextListener());
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disConnect();
System.exit(0);
}
});
setVisible(true);
connect();
new Thread(new StrGetIn()).start();
}
private void connect() {
try {
s = new Socket("127.0.0.1", 24031);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
} catch (IOException e) {
System.out.println("服务器不存在或系统错误,请联系管理员,系统退出...");
System.exit(-1);
}
}
private void disConnect() {
try {
dos.writeUTF("Client exit...");
dos.close();
dis.close();
s.close();
} catch (IOException e1) {
System.out.println("无法关闭网络链接,系统非法退出...");
}
}
private class tfTextListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str = tfText.getText().trim();
try {
if (!str.equals("")) {
//taText.append(str + "\n");
dos.writeUTF(str);
dos.flush();
} else {
taText.append("系统提示:****发送内容不能为空****\n");
}
} catch (IOException e1) {
System.out.println("网络连接错误,请联系管理员,系统退出...");
System.exit(-1);
}
tfText.setText("");
}
}
private class StrGetIn implements Runnable {
public void run() {
try {
while(true) {
taText.append(dis.readUTF());
}
} catch (IOException e) {
System.out.println("Client readUTF error");
}
}
}
}
⑵ 用java做一个聊天室系统需要用到哪些知识呢
以前做过一个,界面用swing表现就可以了,程序主要用到socket编程,不需要框架吧,DB,mysql,oracle都可以
如果用 web,直接用js+xml文件就可以实现了
⑶ java 开发的聊天室怎样添加系统时间
java取系统的时间的方法一般有两种:System.currentTimeMillis()取当前的时间戳,new Date() 默认的也是当前的时间。不知道你这问的是这个吗?
⑷ 怎么用java做局域网的聊天工具(聊天室)
呵呵,楼主您好!要用Java做聊天室说简单也不简单,但是说难呢也不难.
说简单点,就是会话跟踪技术(我个人这样理解).要做聊天室,您需要
使用到的工具: tomcat 服务器(因为是免费的,其他也可以哦,呵呵).
Myeclipse(sun公司提供的编写Java程序的工具,别说你不知道哈,
哪样的话我就晕倒了哦,呵呵)
页面框架的设计:index.jsp(聊天室主页面)index_top.jsp(聊天室的顶部页面)
usersonline.jsp(在线人数的统计及显示页面) sendMessage.jsp(发送信息的页面)
showMessage.jsp(显示聊天信息的页面)register.jsp(用户注册的页面)
login.jsp(用户登录页面)
当然,这是最简单的设计方式咯.您也可以设计得更好点.
页面介绍与功能:
index.jsp 主要是聊天室的主页面.由上中下3个框架组成,中间部分在分为
左右2个框架.实际上index.jsp就是一个由于5个框架组成的页面
顶部框架:放index_top.jsp页面.可以设计自己聊天室的特色(比如说:logo)
中间部分的左边框架:showMessage.jsp 显示聊天的信息
中间部分的右边框架:usersonline.jsp(在线人数的统计及显示页面)
底部框架:sendMessage.jsp 这个发送信息的jsp页面.不多说吧
聊天室的框架的设计大楷就是这样子咯
实现聊天:
1.编写一个servlet,用户处理的信息(包括验证用户是否登录和聊天信息)。
2.用户发送信息之后,将发送的信息存放到Application中(群聊)(放在session中就是私聊)
3.显示信息的页面每个XX秒中获取session或者Application中的数据显示出来就OK了
更多的东西还是需要您学习Ajax之后再做,会有不一样的效果哦。祝您成功哟.呵呵
⑸ 如何用Java编写一个聊天室程序,可以支持单聊和多聊
聊天程序又叫即时通讯系统
分类两部分:客户端和服务端
客户端:用户聊天的界面
服务端:接收消息并转发到指定用户
其中服务端和客户端用tcp或者udp连接,使用socket编程完成通信。
按着这个思路可以开发出一套聊天程序
客户端常用界面 bs版本的又layim
服务端 openfire或者自己实现
⑹ java聊天室界面如何做
JAVA聊天室要用到:
Swing图形用户界面。JAVA中数据库的操作,以及JAVA中网络的连接
当把这些知识学好,做一个聊天室应该是不成问题的。
Swing图形用户界面:实现窗口的显示。
数据库的操作实现用户登录,聊天记录存储等功能。
网络连接实现不同客户端聊天。
==
⑺ java的一个简单聊天室的系统结构,大概的跟我说一下。
定义要求:⑴完善的支持中文。由于Java编译器版本及运行环境的差异等原因,在Java语言的中文处理中常出现乱码等现象,表现在中文显示与网络传输不正常、中文不能输入等方面。在这个聊天室系统中我们将彻底解决中文的兼容性问题。⑵具有健壮性。即聊天室系统能够处理各种异常,能够识别和控制客户端的各种行为,能够返回清理不正常退出后所分配的系统资源,能够踢出超时连接用户以减轻服务器负载等。虽然Java语言本身能够自动收集处理无用的对象,但我们仍然需要作一定的清理工作。⑶广泛的适应性。因为我们不能要求聊天用户必须使用某种浏览器或操作系统,因此所编写的Java程序,尤其是Applet,必须能在各种平台的各个版本的浏览器上都能正常运行。考虑到网络用户的使用情况,我们定的标准是能适应以下版本的浏览器:Netscape 3.x,Netscape Communicator 4.x,Internet Explorer 3.x、4.x、5.x中英文版。设计实现:基于Java的Web聊天室系统包括聊天服务器和客户端两部分。聊天服务器是一个Java Application,与Web服务器程序运行在同一机器上。客户端部分即是一个含Java Applet的HTML页面,它由Web服务器传送给客户端浏览器,交由浏览器的Java虚拟机(VM)解释执行。该Applet初始化后与聊天服务器进行连接,聊天服务器对于每个连接请求产生一个连接线程(Connection Thread),来维护和管理与该客户端的会话。客户端的发言被传送到服务器端后由其向其他客户进行广播(Broadcast),达到相互聊天的目的。 在聊天服务器中,我们使用哈希表(Hashtable)来存储所有的连接线程。主线程为ChatServer,对于每个新的客户连接请求产生一个Connection线程。同时我们还运行了一个检查线程CheckActiveTimer,它相当于一个定时器,每隔一定时间就扫描所有的客户连接线程(即扫描Hashtable),检查每个客户连接是否超时(例如很长时间没有发言或者死机),并给出警告或直接踢出(Kick)用户。
⑻ Java实现一个简单的聊天室
基本原理就是弄一个全局的容器,每进来一个人,将ip等相关信息放入容器,有人发送消息时,遍历容器,向除它而外的所有人发送该消息。并不是很难,但是要考虑的细节还是不少的
⑼ 我做java的简易聊天室,已经可以群聊和私聊,如何把创建房间加进去,且只能同一个房间里才能群聊和私聊
我说下思路:
1、客户端创建房间时给每个房间分配惟一的一个房间ID,房间是公开的,每个连接的客户端都可以看到,房间属性,比如密码,比如黑名单,房间保存在Server内存当中,如果你使用了集群,建议存储到分布式缓存当中(Redis是最好的选择,其次是memcached),当创建完成后,将房间信息发送给所有客户端。新客户端连接进来时,客户端要主动从服务端拉取房间信息。建议采用服务端主动通知(房间增减,服务端主动通知给所有客户端)和客户端定时轮询(客户端起个定时任务,每隔一定时间主动向服务端拉取房间列表)的方式来保证房间列表的动态更新。
2、当客户端选择加入房间时,如果设置有加入条件,比如密码,那就提示客户端输入,如果是其他条件就判断加入客户端是否符合这个条件。服务端保存房间同客户端的关联关系(可以设计成一对多,也就是一个客户端只能在一个房间聊天,也可以设计成多对多,一个客户端可以同时加入多个房间聊天,主要看设计),并将这个消息通知给这个房间所有的客户端列表“欢迎***进入房间”(消息的发送者为系统,房间ID这个房间的ID,接收人无,表示是这个房间的公开消息,消息内容即:欢迎***进入房间。)
3、把聊天内容当成消息的话,那消息应该有这样的属性,发送人,房间ID(如果没有房间ID就当成系统公告消息,在所有房间显示),接收人(如果没有指定接收人,则是公开消息,如果有接收人,就是私聊消息,只能在同一个房间私聊,那在发消息的时候要判断下接收客户端的是否在这个房间列表当中)。
4、再来说消息路由设置,当客户端发送消息时,根据房间ID,找到这个这个房间内所有的客户端列表,如果没有指定接收人,那消息就推送给这个房间关联的所有客户端,如果指定有接收人,接收人不在这个房间,直接提示“***已经离开”,如果还在就把消息推送给这个指定的客户端。
5、房间的管理:踢人,把这个客户端从房间同客户端关联关系解除,并在房间显示消息“***被踢出房间”等等