java聊天室登陆的问题 谢谢了

问题描述

我们的大作业是编写一个模拟的聊天室我在运行服务器后直接运行两次客户端就可以实现互相的通信,但是登录两个不同的账号后能出现客户端界面,但是发送信息时没任何反应,不报错也不抛异常,不知道什么原因,希望能够得到帮助,先谢谢了!下面贴代码服务器:ChatServer.javapackagecom.cy.chat;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.List;publicclassChatServer{publicstaticvoidmain(String[]args)throwsException{Listsockets=newArrayList();ServerSocketss=newServerSocket(9010);while(true){Sockets=ss.accept();sockets.add(s);Threadt=newChatThread(s,sockets);t.start();}}}classChatThreadextendsThread{Sockets;Listsockets;publicChatThread(Sockets,Listsockets){this.s=s;this.sockets=sockets;}publicvoidrun(){try{BufferedReaderin=newBufferedReader(newInputStreamReader(s.getInputStream()));while(true){Stringstr=in.readLine();if(str==null)return;for(inti=0;i<sockets.size();i++){Sockets2=(Socket)sockets.get(i);PrintWriterout=newPrintWriter(s2.getOutputStream());out.println(str);out.flush();}}}catch(IOExceptione){}finally{sockets.remove(s);try{s.close();}catch(IOExceptione){}}}}

客户端:ChatClient.javapackagecom.cy.chat;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.Socket;importjavax.swing.JButton;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.WindowConstants;importcom.cy.sign.SignUpJFrame;importcom.cy.usersql.User;importcom.cy.usersql.UserBO;publicclassChatClientextendsjavax.swing.JFrame{privateJTextAreajTextArea1;privateJTextFieldjTextField1;privateJButtonjButton1;BufferedReaderin;PrintWriterout;Sockets;Stringname;publicstaticvoidmain(String[]args){//SwingUtilities.invokeLater(newRunnable(){//publicvoidrun(){ChatClientinst=newChatClient();inst.setVisible(true);inst.receive();//}//});}publicChatClient(){super();initGUI();initNet();}publicvoidreceive(){try{while(true){Stringstr=in.readLine();if(str==null)return;jTextArea1.append(str+"n");}}catch(IOExceptione){}}privatevoidinitNet(){try{s=newSocket("127.0.0.1",9010);out=newPrintWriter(s.getOutputStream());in=newBufferedReader(newInputStreamReader(s.getInputStream()));}catch(Exceptione){e.printStackTrace();}}privatevoidinitGUI(){try{setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);{Useru=newUser();UserBObo=newUserBO();jTextArea1=newJTextArea();//文本显示框jTextArea1.setEditable(false);getContentPane().add(jTextArea1);jTextArea1.setText("你好"+bo.queryUserById(SignUpJFrame.id).getName()+",欢迎进入聊天室!n");jTextArea1.setBounds(0,0,384,224);}{jTextField1=newJTextField();//文本输入框getContentPane().add(jTextField1);jTextField1.setText("");jTextField1.setBounds(0,225,315,37);}{jButton1=newJButton();//发送按钮getContentPane().add(jButton1);jButton1.setText("u53d1u9001");jButton1.setFont(newjava.awt.Font("微软雅黑",0,11));jButton1.setBounds(314,225,70,37);jButton1.addActionListener(newOkListener());}pack();setSize(400,300);}catch(Exceptione){e.printStackTrace();}}classOkListenerimplementsActionListener{publicvoidactionPerformed(ActionEventarg0){UserBObo=newUserBO();Useru=newUser();try{name=bo.queryUserById(SignUpJFrame.id).getName();}catch(Exceptione){e.printStackTrace();}Stringtext=jTextField1.getText();jTextField1.setText("");out.println(name+":"+text);out.flush();}}}

登录:packagecom.cy.sign;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.net.Socket;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.SwingUtilities;importjavax.swing.WindowConstants;importcom.cy.chat.ChatServer;importcom.cy.chat.ChatClient;importcom.cy.usersql.User;importcom.cy.usersql.UserBO;publicclassSignUpJFrameextendsjavax.swing.JFrame{privateJLabeljLabel1;privateJLabeljLabel2;privateJButtonjButton1;privateJTextFieldjTextField2;privateJTextFieldjTextField1;publicstaticintid;publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){SignUpJFrameinst=newSignUpJFrame();inst.setLocationRelativeTo(null);inst.setVisible(true);}});}publicSignUpJFrame(){super();initGUI();}privatevoidinitGUI(){try{setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);{jLabel1=newJLabel();getContentPane().add(jLabel1);jLabel1.setText("u8d26u53f7:");jLabel1.setBounds(32,60,34,26);jLabel1.setFont(newjava.awt.Font("微软雅黑",0,14));}{jLabel2=newJLabel();getContentPane().add(jLabel2);jLabel2.setText("u5bc6u7801:");jLabel2.setBounds(32,135,34,23);jLabel2.setFont(newjava.awt.Font("微软雅黑",0,14));}{jTextField1=newJTextField();getContentPane().add(jTextField1);jTextField1.setBounds(78,63,230,24);}{jTextField2=newJTextField();getContentPane().add(jTextField2);jTextField2.setBounds(78,136,230,24);}{jButton1=newJButton();//登录按钮getContentPane().add(jButton1);jButton1.addActionListener(newOkListener());jButton1.setText("u767bu5f55");jButton1.setBounds(152,205,70,33);}pack();setSize(400,300);}catch(Exceptione){e.printStackTrace();}}//登录按钮的监听程序classOkListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){Useru=newUser();UserBObo=newUserBO();id=Integer.parseInt(jTextField1.getText());Stringpassword=jTextField2.getText();try{u=bo.queryUserById(id);//在数据库中查找个人信息if(password.equals(u.getPassword())){//判断密码是否一致ChatClientcc=newChatClient();cc.setVisible(true);}else{newSignFailJFrame().setVisible(true);}}catch(Exceptione1){e1.printStackTrace();}}}}

解决方案

解决方案二:
这么多代码。。。
解决方案三:
引用1楼liutao363071094的回复:

这么多代码。。。

感觉主要都是控件和导包...
解决方案四:
实际这种聊天窗口无非就让你掌握Socket 编程;想通了其实很简单。你先去看看Socket 基础;多看看别人怎么写的;去找个Demo研究下。
解决方案五:
引用3楼liutao363071094的回复:

实际这种聊天窗口无非就让你掌握Socket 编程;想通了其实很简单。你先去看看Socket 基础;多看看别人怎么写的;去找个Demo研究下。

谢谢确实看了可能没看明白吧
解决方案六:
jTextArea1=newJTextArea();//文本显示框看是不是跟jTextArea1.setEditable(false);有关系JTextArea这个显示时要刷新一下
解决方案七:
应该是线程堵塞了,以前谢了一个模仿qq的,有源码,实现了登陆和聊天功能,可以多人聊天,你如果想要代码可以联系我,这里就不发了,太多代码了

时间: 2024-07-29 10:53:00

java聊天室登陆的问题 谢谢了的相关文章

请求-JAVA聊天室服务器端线程的识别

问题描述 JAVA聊天室服务器端线程的识别 我做的基于JAVA的有界面的聊天室.注册界面单击注册需要连接服务器去向数据库中插入记录并返回账号.如:点击注册,会执行我标记的那块代码(序列化输出流向服务器发送数据及接受结果) 登陆界面点击登陆需要连接数据库后台验证数据,如: 现在的问题是:在服务器端有两个线程分别用来处理这个两个请求的.如:但是每次区别不了请求,都是处理注册请求的连接..怎样区别啊 解决方案 图上的字太小,看不见.看文字描述,每个会话开始的时候产生一个随机数或者时间戳作为会话id,服

ios-在iOS中怎么使用XMPP框架实现聊天室功能呢?谢谢

问题描述 在iOS中怎么使用XMPP框架实现聊天室功能呢?谢谢 使用XMPPFramework在iOS中实现XMPP聊天室功能.现在已经实现点对点聊天.希望得到大牛的帮助,谢谢! 解决方案 上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢! 解决方案二: 参考开发(六)聊天室" rel="nofollow">XMPPFrameWork IOS 开发(六)聊天室 想要完整的开源项目的话,参考Dollarss 解决方案三: 非常感

java 聊天室-java聊天室,设计流程

问题描述 java聊天室,设计流程 我是一个java初学者,想用java编一个类似qq的聊天室,但是不清楚编聊天室的流程,所以请教一下前辈们.

关于java聊天室,求助

问题描述 关于java聊天室,求助 问题: 服务器端退出,线程却还在运行 报错: java.net.SocketException: Socket closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStr

求java聊天室 jsp只做显示!!

问题描述 各位高手请拉小弟一把.如有可用代码,本人可另开贴送分.请给个网址或发到本人信箱.zuiyihongyan_1002@126.com谢谢 解决方案 解决方案二:open-open.com解决方案三:我这有个前几天刚写的是struts+hibernate+spring+ajax实现功能很简单解决方案四:没事的哥们,我现在是一定头绪都没有,就和无头的苍蝇一样,什么也不会,407952949这我的QQ号,能加上聊聊吗解决方案五:我写了一个javaswing的聊天程序,如果你感兴趣,我可以发给你

一个jsp聊天室登陆(login.jsp)的错误问题(书上例子代码)

问题描述 这是原封不动导入到Myeclipse6.5里的代码,但是出错了,很奇怪,故咨询下各位,谢谢.<!--用page指令定义语言为java页面编码为utf-8--><%@pagelanguage="java"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head&g

Java聊天室小程序-客户端代码实现方面

客户端的实现效果 1.登录服务器,如果服务器端口号和IP号输入的字符都是"0"则,客户端连接 到默认的服务器 2.输入聊天昵称 3.输入"-quit"会自动退出聊天 4.输入"-getList"会得到在线用户的名称 5.输入"-to <用户名称> <聊天信息>"会把信息发送到指定的用 户处,他人看不到 6.输入"-help"会得到客户端相应操作帮助 6.直接输入内容则会将内容发送到所

Java聊天室小程序-服务器代码实现方面

服务器的实现效果: 1.输入-help得到所有有关服务器操作的命令 2.输入-run进入服务器各项内容初始化 3.输入-stop断开服务器 4.输入-quit断开服务器,并退出操作 5.服务器创建成功后,会通过单独的线程运行监听客户端信息(listenLink) 6.服务器接收到数据后,会将数据移交至数据分析器(analyseMes)处理 7.当用户确定连接并确定昵称后,服务器将该用户的地址及姓名存储在 infoMemory中. 服务器的类与方法: 1.测试服务器创建:testServer(St

Java聊天室小程序-DOS版本规划方面

以下的只是网络基础而已,可供初学者参考 实现效果图: 服务器端: 客户器端: