- 时间:2021-09-02 09:47 编辑:崔现雅 来源:蚂蚁资源 阅读:186
- 扫一扫,手机访问
摘要:大家好,今天给大家介绍关于java聊天系统(java实现在线聊天)的相关内容,详细讲解java的一个简单聊天室的系统结构,大概的跟我说一下。,求JAVA网络聊天系统代码,java 做聊天软件等,希望可以帮助到您。
java的一个简单聊天室的系统结构,大概的跟我说一下。,定义要求:(1)完美支持中文。由于Java编译器版本和操作环境之间的差异,Java语言通常有一个乱码的中文,而表达式在中文显示器和网络传输中不正常,而且汉语无法输入。在这个聊天室系统中,我们将完全解决中国兼容性问题。 (2)他具有稳健性。也就是说,聊天室系统可以处理各种例外,识别和控制客户的各种行为,并且可以在未正确退出清洁后返回分配的系统资源,并且可以踢出超时连接用户以减轻服务器负载。虽然Java语言本身可以自动收集使用无用对象,但我们仍然需要make某些清理工作。 (3)广泛适应性。因为我们不能要求聊天用户使用一些浏览器或操作系统,所以写的Java程序,尤其是小程序,必须能够正常运行各种平台的所有版本。考虑到网络用户的使用情况,我们的标准是为了满足以下版本的浏览器:Netscape 3.x,Netscape Communicator 4.x,Internet Explorer 3.x,4.x,5.x中英文。设计实现:基于Java的Web聊天室系统包括两部分:聊天服务器和客户端。聊天服务器是使用Web服务器程序在同一台计算机上运行的Java应用程序。客户端是包含Java applet的HTML页面,其由Web服务器传输到客户端浏览器,并在浏览器的Java上执行UAL机器(VM)。此applet ...定义要求:(1)完美支持中文。由于Java编译器版本和操作环境之间的差异,Java语言通常有一个乱码的中文,而表达式在中文显示器和网络传输中不正常,而且汉语无法输入。在这个聊天室系统中,我们将完全解决中国兼容性问题。 (2)他具有稳健性。也就是说,聊天室系统可以处理各种例外,识别和控制客户的各种行为,并且可以在未正确退出清洁后返回分配的系统资源,并且可以踢出超时连接用户以减轻服务器负载。虽然Java语言本身可以自动收集无用的对象,我们仍然需要一定的清理。工作。 (3)广泛适应性。因为我们不能要求聊天用户使用一些浏览器或操作系统,所以写的Java程序,尤其是小程序,必须能够正常运行各种平台的所有版本。考虑到网络用户的使用情况,我们的标准是为了满足以下版本的浏览器:Netscape 3.x,Netscape Communicator 4.x,Internet Explorer 3.x,4.x,5.x中英文。设计实现:基于Java的Web聊天室系统包括两部分:聊天服务器和客户端。聊天服务器是使用Web服务器程序在同一台计算机上运行的Java应用程序。客户端是包含Java applet的HTML页面,其由Web服务器发送到客户端浏览器,并在眉毛上执行呃的Java虚拟机(VM)。在Applet初始化之后,与聊天服务器连接,聊天服务器生成连接线程以为每个连接请求与客户端进行维护和管理会话。客户端的语句被传输到服务器,它是向其他客户播放,以达到彼此聊天的目的。在聊天服务器中,我们使用Hashtable来存储所有连接线程。主线程是ChatServer,它为每个新客户端连接请求生成连接线程。同时,我们已经运行了一个检查线程常规拍卖机,它相当于计时器,扫描所有客户连接线程(即每隔一时扫描“,检查每个客户端是否超时(例如,没有语音或死机)并发出警告或直接踢出(踢)用户。
求JAVA网络聊天系统代码,自从我学到了Java以来,我不必说出来。我不必说,直接javaa然后java可以。第一个客户-------------------------------.IO. *;导入java.awt。 *;导入java.awt。 *;导入java.awt.event * ;.公共类ChatClient {私有字符串名称;私人插座S;私有数据库Stram; Private DataOutputStream DOS;私人框架F;私人Textarea Ta;私人文本菲尔德TF;私有布尔runnable = true;公共静态void main(string args []){chatclient cc = new chatclient(); cc.createui(); cc.inputname(); cc.connect(); cc.createThread();} punction void createui();} public void createui(){f =新帧(“客户”); ta = new textarea(); ta.seteDable(false); tf = new textfield();按钮发送=新按钮(“发送”); Panel P =新面板(); p.setla.你是新的borderlayout(); P.ADD(TF,“Center”); p.add(送“东方”); F.ADD(TA,“中心”); F.ADD(P,“South”); MyClientListener listener = new myclientListener(这个); send.addactionlistener(侦听器); tf.addactionlistener(听众); f.addwindowListener(新WindowAdapter(){public void windowscling(windowEvent e){ChatClient。this..shutdown();}}); F.setsize(400,400); F.SetLocation(600,0); F.SetVisible(真实); tf.requestfocus();}公共void infutname(){string name = javax .swing.joptionpane.showinputdialog(“输入您的姓名:”); this.setname(姓名); F.Settitle(姓名);} public void connection(){try {s =新套接字(“127.0.0.1”,9999); dos = new dataputstream(s.getoutputStream()); dis = new datainputstream(s.getInputStream()); dos.writeutf(姓名);}捕获(ioException e){e.printStacktrace();}}}}}}}}}}} public void createThread(){myclientReader Reader = New MyClientReader(此); reader.start();} public void stop(){runnable = false;} public void shutdown(){try {dos.writeutf(“bye”); ta.append(“在5秒内退出!”); this.stop();线程。leep(5000);透露 (); dos.close(); s.close();} catch(例外e){} system.exit(0); public boolean getrunnable(){return runnable;} public void setName(字符串名称){this.name = name;} public datainputstream getdatainstream(){return dis;} public dataoutputstream getDataOuttream(){return dos;} public textarea gettextarea( ){return ta;} public textfield getTextField(){return tf;}} class myclientListener实现ActionListener {私有聊天客户端; public myclientListener(ChatClient Client){this.client = client;}公共void actionPerformed(ActionEvent e){textfield tf = client.gettextfield();字符串info = tf.gettext();尝试{client.getdataOutputStream()writeUtf(Info);} catch(ioException e1){e1.printstacktrace(); }如果(Info.equals(“bye”)){client.shutdown();} tf.settext(“”); tf.requestfocus();}} class myclientReader扩展了线程{私有聊天客户端; public myclientReader(ChatClient客户端){this.client = client;} public void run(){字符串信息; datainputstream dis = client.getDatainputStream(); textarea ta = client.gettextarea();尝试{while(client.getrunnable()){info = dis.redutf(); ta.append(Info +“\ n”);}}}}}}服务器------------------------------------------------------ ---------------------------------------------------------------- ---------------------------------------------------------------.-------- *;导入java.net。 *;导入java.util。 *;公共类聊天服务器{vitepstatic void main(String args []){hashtable
userlist = new hashtable ();字符串名称; DataInputStream DIS; DataOutputStream DOS;尝试{serversocket ss = new serversocket(9999); while(true){socket s = ss.accept(); dis = new dataNputStream(s.getInputStream()); dos = new dataputstream(s.getoutputStream()); name = dish = disput(); UserList.put(名称,DOS);新的MyServerReader(名称,DIS,UserList).start();}} catch(例外e){e.printstacktrace();}}}}}}}}}}}}}}}}}} class myserverreader扩展线程{私有字符串名称;私有数据库Stram;私人哈希特用户列表; public myserverreader(字符串名称,datainputstream dis,hashtable 用户列表){this.name = name;这个.dis = disp;这个.UserList = UserList;} public void run(){字符串信息;尝试{TransmitMitMessage(名称+“in!”);虽然(真实){info = dish.readutf(); if(info.equals(“bye”)){dataputstream dos =(dataOutputStream(userlist.get(name)); thread.sleep(1000); dos.close(); dis.close(); userlist.remove(名称); TransmitMitMitMitMessage(名称+“OUT!”,“ - 服务器信息 - ”);中断;否则if(info.length()> 0){TransmitMitumage(Info,name);}}捕获(例外e){ public void transmitmessage(String msg,字符串名称){collection doss = userlist.values();对于(对象O:剂量){dos =(dataputstream)o; try {dos.writeutf(name + “:+ msg);} catch(例外e){}}}}这是写的最简单的套接字,总共两个代码,一个客户端服务器。客户可以打开更多聊天。您可以在不同的机器上运行,S =新套接字(“127.0.0.1”,9999); IP地址可以更改为服务器地址。这条线吗?也有更复杂的像QQ。
java 做聊天软件,网网络?除了与Swing进行界面外,还需要套接字和Serversocket类来连接到网络。最好使用多线程来实现多人聊天。我不知道您是否要制作组,或者是一个一对一对话框。没有,你正在添加。
责任编辑(崔现雅)
以上就是关于**java聊天系统,java实现在线聊天**的全部内容,如有需要以上系统,请在搜索框搜索商品或者咨询客服,了解更多请关注蚂蚁资源网。
内容来源于网络,如无意中有侵权,请联系客服核实,以便及时删除,谢谢支持!
- xiaozhang
- 求一个用JAVA写的网络编程的网络聊天系统,能够实现两个人聊天信息收发。,这个是客户端import java.net.*;import java.io.*;import java.awt.*;import java.awt.event.*;public class client extends Frame implements ActionListener{ int i=1;Frame f; TextField ip,port; Label Lip,Lport; Button connect,exit; public static void main(String args[]) {client c1 = new client(); c1.init(); }public void init(){ f=new Frame("client connection"); f.setLayout(new FlowLayout()); ip =new TextField("localhost"); port =new TextField("8189",5); Lip=new Label("ip address"); Lport=new Label("port"); connect=new Button("connect"); exit=new Button("exit"); connect.addActionListener(this); exit.addActionListener(this); f.add(Lip); f.add(ip); f.add(Lport); f.add(port); f.add(connect); f.add(exit); f.setSize(500,60); f.setVisible(true);}public void actionPerformed(ActionEvent e){ if(e.getSource()==exit) System.exit(0); if(e.getSource()==connect) { new Thread(new threadclient(ip.getText(),port.getText(),i)).start(); i++; }}}class threadclient extends Frame implements Runnable,ActionListener{ String ip,port; int no; Frame f; TextArea ta; TextArea name; TextField tf; Button send,bye; InputStream ins; Socket s; PrintStream out1; BufferedReader in; BufferedWriter out; threadclient(String n,String m,int i) { ip=n; port=m; no=i; } public void run(){ f=new Frame("client NO." +no); f.setLayout(new FlowLayout()); ta=new TextArea("",10,30,TextArea.SCROLLBARS_BOTH); tf=new TextField("",20); send=new Button("send"); bye=new Button("bye"); send.addActionListener(this); bye.addActionListener(this); f.add(ta); f.add(tf); f.add(send); f.add(bye); f.setSize(300,300); f.setVisible(true); Integer tmp=new Integer(port); int portint =tmp.intValue(); try { s=new Socket(ip,portint); in=new BufferedReader(new InputStreamReader(s.getInputStream())); out1=new PrintStream(s.getOutputStream()); ta.append(in.readLine()+"\n"); }catch(Exception e) { System.out.println(e.getMessage()+" ss"); } } public void send(String txt){ try{ out1.println(txt); out1.flush(); ta.append(in.readLine()+"\n"); }catch(IOException e) { System.out.println(e.getMessage()+"send"); } }public void actionPerformed(ActionEvent e){ if(e.getSource()==bye){ send("BYE"); System.exit(0); } if (e.getSource()==send) send(tf.getText());}}这个是服务器import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.HashMap;import java.util.Map;public class server { private static Map clientMap=new HashMap(); public static void main(String[] args) { int i = 1; try { ServerSocket s = new ServerSocket(8189); for (;;) { Socket incoming = s.accept(); System.out.println("连接成功" + i); ThreadedEchoHandler teh=new ThreadedEchoHandler(incoming, i); teh.start(); String name=teh.getClientname(); clientMap.put(name,incoming); i++; } } catch (Exception e) { System.out.println(e); } }}class ThreadedEchoHandler extends Thread { Frame f; TextArea ta; TextField tf; Button send, bye; InputStream ins; Socket s; PrintStream out1; BufferedReader in; PrintWriter out; public ThreadedEchoHandler(Socket i, int c) { incoming = i; counter = c; f=new Frame("server"); f.setLayout(new FlowLayout()); ta=new TextArea("",10,30,TextArea.SCROLLBARS_BOTH); tf=new TextField("",20); send=new Button("send"); bye=new Button("bye"); send.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { send(tf.getText()); } }); bye.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { send("bye"); } }); f.add(ta); f.add(tf); f.add(send); f.add(bye); f.setSize(300,300); f.setVisible(true); } public String getClientname() { try { in = new BufferedReader(new InputStreamReader( incoming.getInputStream())); out = new PrintWriter(incoming.getOutputStream(), true); return in.readLine(); } catch (IOException e) { System.out.println(e.getMessage()+"get"); } return null; } public void send(String context){ out.println(context); out.flush(); } public void run() { try {boolean done = false; while (!done) { String str = in.readLine(); if (str == null) done = true; else { out.println("Echo(" + counter + "):" + str); ta.append("Echo(" + counter + "):" + str+"\n"); if (str.trim().equals("BYE")) done = true; } } incoming.close(); } catch (Exception e) { System.out.println(e.getMessage()+"run"); } } private Socket incoming; private int counter;}这个鸟东西是个新手写的。唉,太烂了,我无力吐槽。
- 2021-09-02 09:47:27
- 外网
- 。 。 。我以前遇到过这个,但我用C#写道,但有Java,你可以使用Swing制作的简单接口,并使用套接字套接字进行简单的聊天。 。 。 。 。 。但是,我不知道您是否询问C / S模式是否或B / S模式?其中,B / S模式可以用servlet实现,并且该想法由上下文上下文绑定参数实现,并且C / S模式由RMI的远程调用方法实现。 。 。首先为您提供C / S模式的核心代码。 。 。导入java.awt。 *;导入java.awt.Event。 *;导入javax.swing。 *;导入java.io. *;导入java.net。 *;公共类服务器扩展JFrame {公共静态void main(String“] args){server server = new server(); //设置框架服务器的关闭.setdefaultCloseoperation(jframe.exit_on_close); //显示Framework Server.SetVisible(true); server.pack(); CreateServer CS = New CreateServer;} //设置帧的宽度和高私有静态最终int宽度= 450;私人静态最终INT高度= 450; //聊天信息框JTextArea mainArea = New JTextarea(12,35); //发送填充框以获取jtextarea sendarea = new jtextarea(5,30); //配置公共服务器(){//定位框架工具包kit = toolkit.getdefaultToolkit(); Dimension screensize = kit.getscreensize(); //获取当前分辨率int width = screensize.width; int height = screensize.height; int x =(宽度宽)/ 2; int y =(高度高度)/ 2; //设置窗口显示位置setLocation(x,y); //设置帧大小规定(宽度,高度); //设置标题Settle(“新的新聊天服务器”); //设置窗口的SetResizable(False)的自定义大小; //在内容表单上创建3个面板,并加入目录容器Con = this.getContentPane(); JPanel LabelPanel = New LabelPanel(); Con.add(LabelPanel,BorderLayout.North); jpanel contentpanel = new contentpanel(); con.add(contentpanel,borderlayout.center); jpanel sendpanel = new sendpanel(); con.add(sendpanel,borderlayout.south);} //聊天窗口标题面板类LabelPanel扩展JPanel {Public LabelPanel(){Font Font = New Font(“对话框”,Font.bold,18); Jlabel标签=新jlabel(欢迎小型新聊天服务器“); label.setfont(字体); this.add(标签);} //聊天信息视图面板//这个面板是一个无与伦比的区域count contentpanel扩展了jpanel{public contentpanel(){flowlayout fl = new flowlayout(flowlayout.center); this.setlayout(fl); mainAlea.SetLineWrap(True); mainAlea.seteDable(false); JScrollPane ScrollPanel = new jscrollpane(mainarea)this.add(scrollpanel);}} //填写发送信息类sendpanel的panel扩展jpanel {public sendpanel(){//面板组件水平分隔的15个像素,垂直间隔10像素流量layout = new flowlayout(flowlayout.left,15,10); this.setLayout(布局); sendarea.setLineWrap(true); jscrollpane scrollpanel = new jscrollpane(sendarea);这个.dd(scrollpanel); jbutton send = new jbutton(“发送”);这一点(发送); //配对按钮注册操作侦听器send.addactionListener(new actionlistener(){public void actionperformed(actuctionevent e){string msg = sendarea.gettext(); if(!msg.equals(“)){mainAlea.Append(”[服务器]:“+ msg +”\ n“); sendeagea。settext(”“); createServer.sendmsg(msg);否则{返回; createErever}}}}}}}}}}}}}}}}}}}}} // createErever扩展了线程{private server服务器; intration静态bufferedreader in = null; // store客户端将数据发送到服务器的私有静态printwriter out = null; //存储服务器发送客户端的数据私有套接字套接字= null; //等待客户端连接套接字私人服务器ss = null; //启用服务器套接字连接//构造函数public creatserver(server s){this。server = s ;尝试{ss = new serversocket(2345); system.out.println(“服务器成功启动...!”); socket = ss.accept(); //等待客户重新Quest //获取输入服务器数据in = new bufferedreader(new input.getInputStream())); //将数据输出获取到客户端= new printwriter(socket.getoutputstream(),true); out.println(“你好!”);捕获(例外r){r.printstacktrace();} this.start(); //启动线程} / /实现信息发送到客户端发送方法公共静态void sendmsg(String s){try {out.println(“server”:“+ s +”\ n“);捕获(例外e) {system.out。 println(“发送信息失败...... !!”); E.PrintStackTrace();}}}}}}}}}}} //线程线程的线程类RUN方法实现了数据听音//线程到客户端,起始的方法中,执行线程公共无效运行(){string信息=“”; while(true){try {msg = in.readline(); //thread.sleep(500); //线程睡眠} catch(插座例外ex){ex。 printstacktrace();突破;}捕获(ioException r){r.printstacktrace();休息;} //如果从客户端获取的信息不为空,则对象不是空字符串//,在聊天信息文本域中显示信息(msg!= null && msg.trim()!=“”) {server.mainarea.append(msg +“\ n”);}}}}
- 2021-09-02 09:47:27
- 招财猫科技
- Java聊天室计划源代码2需要分析2.1业务要求1.与聊天室成员聊天。 2.您可以与聊天室成员聊天。 3.您可以更改聊天内容样式。 4.用户注册(包括化身),登录。5.服务器监控聊天内容。 6.服务器过滤非法内容。 7.服务器发送通知。 8.服务器踢人。 9.保存服务器日志。 10.保存用户聊天信息。 2.2系统功能模块2.2.1服务器1.处理用户注册2.处理用户登录3.处理用户发送信息4.处理用户获取信息5.处理用户退出2.2.2客户端1.用户注册界面和结果2.用户登录界面和结果3.用户发送信息界面和结果4.用户获取InterfaCE和结果5.用户退出界面和结果2.3性能运行环境:Windows 9x,2000,XP,2003,Linux基本环境:JDK 1.5或更多硬件环境:CPU 400MHz或更多,内存64MB或更多源代码已发送。有如何安装节目。眼泪
- 2021-09-02 09:49:20