ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:152.79KB ,
资源ID:4592916      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4592916.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java源代码聊天室汇总.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Java源代码聊天室汇总.docx

1、Java源代码聊天室汇总Java聊天室目录1 本文简介 22 聊天室截图与说明 22.1 用Java编译: 22.2 服务器登录界面 22.3 服务器窗口 22.4 客服端登录界面 32.5 客服端窗口 33 服务器端 33.1 MyServer(方法 33.2 Login(方法 33.3 Time(方法 34 客户端 34.1 MyClient(方法 34.2 Login(方法 34.3 Time(方法 31 本文简介这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考.本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不

2、能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是XX号!2 聊天室截图与说明2.1 用Java编译:本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看,2.2 服务器登录界面要先运行服务器端的程序用户名:y密码:1用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面2.3 服务器窗口聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后,2.4 客服端登录界面和服务器端的登录一样2.5 客服端窗口当登录上后 客服端就显示已经连接了,此时服务器端的窗口如下由于本程序设计的不是很完整,具体的聊天要先从客服端开始:在客服端输入一条聊天内容后按确

3、定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息.想要结束聊天,直接可以关闭窗口,也可以输入bye后断开聊天有兴趣的朋友可以继续完善本实验程序.3 服务器端3.1 MyServer(方法/服务器端代码import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;

4、import .ServerSocket;import .Socket;import java.text.DateFormat;import java.util.Date;import javax.swing.*;public class MyServer /窗体实现类protected JLabel lab10; /全体变量,做传递的一个组件 String s=已经成功连接; /初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量/构造方法 public MyServer( try/异常处理tryJFrame frame=new JFrame(服务器窗口; /设置窗体

5、frame.setLayout(null; /让布局管理器为空 ,使用绝对定位Font fnt=new Font(Serief,Font.PLAIN,40;/字体设置Font fnt1=new Font(Serief,Font.PLAIN,20;/字体设置/我的用户名显示JLabel lab1=new JLabel(服务器名:,JLabel.LEFT; /标签实例化,文本左对齐lab1.setBounds(8, 10, 100, 20; /设置组件位置及大小frame.add(lab1; /添加组件JTextField text2=new JTextField(30; /单行文本输入组件tex

6、t2.setBounds(150, 10, 200, 20;/设置组件位置及大小text2.setEnabled(false;/文本条不可编辑text2.setText(笑笑聊天室;/输入内容text2.setFont(fnt1;/设置字体frame.add(text2;/添加组件/服务器IP显示JLabel lab2=new JLabel(当前服务器IP:,JLabel.LEFT; /标签实例化,文本左对齐lab2.setBounds(8, 45, 100, 20;/设置组件位置及大小frame.add(lab2;/添加组件JTextField text3=new JTextField(30

7、;/单行文本输入组件text3.setBounds(150, 45, 200, 20;/设置组件位置及大小text3.setEnabled(false; /文本不可编辑text3.setText(127.0.0.1;/输入内容text3.setFont(fnt1;/设置字体frame.add(text3; /添加组件/服务器端口显示JLabel lab3=new JLabel(当前服务器端口:,JLabel.LEFT; /标签实例化,文本左对齐lab3.setBounds(8, 80, 100, 20;/设置组件位置及大小frame.add(lab3;/添加组件JTextField text4

8、=new JTextField(30;/单行文本输入组件text4.setBounds(150, 80, 200, 20;/设置组件位置及大小text4.setEnabled(false;/文本不可编辑text4.setText(8888;/输入内容text4.setFont(fnt1;/设置字体frame.add(text4;/添加组件/聊天记录显示JLabel lab4=new JLabel(聊天记录如下:,JLabel.LEFT; /标签实例化,文本左对齐lab4.setBounds(8, 115, 100, 20;/设置组件位置及大小frame.add(lab4;/添加组件final

9、JTextArea text1=new JTextArea(;/多行文本输入组件text1.setEnabled(false;/文本不可编辑text1.setLineWrap(true;/自动换行 JScrollPane scr=new JScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS; /设置滚动条,水平和垂直滚动条始终显示scr.setBounds(8, 150, 450, 350;/设置组件位置及大小frame.add(scr;/添加组件/聊天输入

10、窗口及确定JLabel lab5=new JLabel(请输入聊天内容:,JLabel.LEFT; /标签实例化,文本左对齐lab5.setBounds(8, 500, 100, 20;/设置组件位置及大小frame.add(lab5;/添加组件final JTextArea text5=new JTextArea(;/多行文本输入组件text5.setLineWrap(true;/自动换行JScrollPane scr2=new JScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCR

11、OLLBAR_ALWAYS;/设置滚动条,水平和垂直滚动条始终显示scr2.setBounds(150, 500, 300, 50;/设置组件位置及大小frame.add(scr2;/添加组件final JButton but=new JButton(确定;/设置确定按钮but.setFont(fnt;/添加字体设置 but.setBounds(480, 500, 200, 50;/设置组件位置及大小but.addActionListener(new ActionListener( /采用内部匿名类public void actionPerformed(ActionEvent eif(e.ge

12、tSource(=but /判断触发器源是否是提交按钮text1.append(笑笑: +lab10.getText(+n ;/在聊天记录上添加文本text1.append(text5.getText(+n; /将输入的聊天内容输出在聊天记录上 s=text5.getText(; /得到聊天内容text5.setText(; / 将聊天窗口内容设置为空 ;frame.add(but;/添加组件 /当前时间显示JLabel lab7=new JLabel(时间显示:,JLabel.LEFT;/标签实例化,文本左对齐lab7.setBounds(450, 20, 100, 20;/设置组件位置及大

13、小frame.add(lab7;/添加组件 DateFormat df=DateFormat.getDateTimeInstance(;/取得系统时间String df2= df.format(new Date(; /将时间转换成字符串 JLabel lab8=new JLabel(df2,JLabel.LEFT;/标签实例化,文本左对齐lab8.setBounds(520, 20, 130, 20;/设置组件位置及大小frame.add(lab8;/添加组件lab10=lab8; /传递时间显示,以便能在聊天记录上显示记录时间new Time(lab8; /使时间动态显示 /用户列表显示 J

14、Label lab6=new JLabel(用户列表:,JLabel.LEFT;/标签实例化,文本左对齐lab6.setBounds(500, 40, 100, 20;/设置组件位置及大小frame.add(lab6;/添加组件JTextArea text6=new JTextArea(;/标签实例化,文本左对齐text6.setEnabled(false;/文本不可编辑text6.setLineWrap(true;/自动换行JScrollPane scr3=new JScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollP

15、ane.HORIZONTAL_SCROLLBAR_ALWAYS;/设置滚动条,水平和垂直滚动条始终显示scr3.setBounds(460, 70, 220, 420;/设置组件位置及大小frame.add(scr3;/添加组件 /窗口的属性frame.setSize(700,600;/窗口大小frame.getContentPane(.setBackground(Color.pink;/窗口的背景颜色frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE;/关闭窗口时关闭程序frame.setLocation(100,50;/在电脑桌面上出现的

16、位置frame.setVisible(true;/显示窗口/连个窗口连接/建立Server Socket并等待连接请求ServerSocket server =new ServerSocket(8889;Socket socket=server.accept(;/连接建立,通过Socket获取连接上的输入/输出流BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream(;final PrintWriter out =new PrintWriter(socket.getOutputStream

17、(;/先读取Client发送的数据,然后从标准输入读取数据发送给Client当接收到bye时关闭连接String s1=,s2=; /标志字符串,作为传递字符串使用while(!(s1=in.readLine(.equals(bye /得到其他窗口传递的字符串,并判断是否结束 text6.setText(可可在线; /当连接成功是在用户列表中 输出用户名字if(!s1.equals( /如果传递的字符串不为空 text1.append(可可: +lab10.getText(+n ;/在聊天记录上添加文本text1.append(s1+n; /将输入的聊天内容输出在聊天记录上 s2=s;/将在聊

18、天窗口中得到的字符串传递给输出字符串 for(;s2.equals(|s2.equals(null;s2=s/当传递的字符串为空时等待用户输入聊天内容 s=;/将在聊天窗口中得到的字符串设为空 if(!s2.equals(&!s2.equals(null/ s2不为空时做 out.println(s2; /向其他窗口输出字符串 out.flush(;/输出聊天内容 /关闭连接in.close(;out.close(;socket.close(;server.close(;catch(Exception e /main函数public static void main(String argsne

19、w Login(; /登录实现 4.2 Login(方法import java.awt.event.WindowAdapter ;import java.awt.event.ActionListener ;import java.awt.event.WindowEvent ;import java.awt.event.ActionEvent ;import java.awt.Color ;import java.awt.Font ;import javax.swing.JFrame ;import javax.swing.JButton ;import javax.swing.JLabel ;

20、import javax.swing.JTextField ;import javax.swing.JPasswordField ;/用户名和密码设置class LoginCheck/设置登录密码private String name ;/用户名private String password ;/密码/构造方法public LoginCheck(String name,String passwordthis.name = name ;/传递用户名this.password = password ;/传递密码/验证用户名和密码public boolean validate(/验证方法if(y.e

21、quals(name&1.equals(password /判断用户名和密码是否正确return true ;/返回trueelsereturn false ;/返回false;/登录窗口class Login/登录类名boolean f=false;/按登录时设置的一个标志 private JFrame frame = new JFrame(Welcome To MLDN ; /设置窗体private JButton submit = new JButton(登陆;/设置登录按钮private JButton reset = new JButton(重置;/设置重置按钮private JLa

22、bel nameLab = new JLabel(服务器: ;/标签实例化private JLabel passLab = new JLabel(密 码: ;/标签实例化private JLabel infoLab = new JLabel(服务器登陆系统 ;/标签实例化private JTextField nameText = new JTextField(10 ;/单行文本输入条private JPasswordField passText = new JPasswordField( ;/单行密码文本输入条 public Login(/登录窗口构造方法Font fnt = new Font

23、(Serief,Font.ITALIC + Font.BOLD,12 ;/设置字体infoLab.setFont(fnt ; / 设置标签的显示文字submit.addActionListener(new ActionListener( /采用内部匿名类public void actionPerformed(ActionEvent eif(e.getSource(=submit /判断触发器源是否是提交按钮String tname = nameText.getText( ; /得到输入的用户名String tpass = new String(passText.getPassword( ;/得

24、到输入的密码,此时通过getPassageword(方法返回的是字符数组LoginCheck log = new LoginCheck(tname,tpass ;/实例化LoginCheck对象,传入输入的用户名和密码if(log.validate(/对用户名和密码进行验证try /线程异常处理tryThread.sleep(2000; /2秒后打开聊天窗口f=true; /登录成功后的表示项为trueframe.dispose(; /关闭本窗口catch(Exception ee/异常获取 elseinfoLab.setText(登陆失败,错误的用户名或密码! ;/登录失败 ;reset.a

25、ddActionListener(new ActionListener( /采用内部匿名类public void actionPerformed(ActionEvent eif(e.getSource(=reset /判断触发器源是否是提交按钮nameText.setText( ;/设置文本框中的内容passText.setText( ;/设置文本框中的内容infoLab.setText(服务器登陆系统 ;/恢复标签显示 ; frame.addWindowListener(new WindowAdapter(/加入窗口监听public void windowClosing(WindowEven

26、t e ; / 加入事件frame.setLayout(null ;/使用绝对定位nameLab.setBounds(5,5,60,20 ;/设置标签的位置及大小passLab.setBounds(5,30,60,20 ;/设置标签的位置及大小infoLab.setBounds(5,65,220,30 ;/设置标签的位置及大小nameText.setBounds(65,5,100,20 ;/设置文本域的位置及大小passText.setBounds(65,30,100,20 ;/设置密码域的位置及大小submit.setBounds(165,5,60,20 ;/设置按钮的位置及大小reset.

27、setBounds(165,30,60,20 ;/设置按钮的位置及大小frame.add(nameLab ;/向窗体加入标签frame.add(passLab ;/向窗体加入标签frame.add(infoLab ;/向窗体加入标签frame.add(nameText ;/向窗体加入文本框frame.add(passText ;/向窗体加入密码框frame.add(submit ;/向窗体加入按钮frame.add(reset ;/向窗体加入按钮frame.setSize(280,130 ;/设置窗体大小frame.getContentPane(.setBackground(Color.gre

28、en ;/设置窗体的背景颜色frame.setLocation(300,200 ;/设置窗体在电脑桌面上的位置frame.setVisible(true ;/显示窗口while(f=false /当登录失败时,一直循环运行, new MyServer(;/显示窗体页面 4.3 Time(方法import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JLabel;i

29、mport javax.swing.Timer;/时间类public class Time public Time(JLabel time /构造方法this.setTimer(time; /设置时间public void setTimer(JLabel time /设置时间方法final JLabel varTime = time; /传递组件Timer timeAction = new Timer(1000, new ActionListener( /时间监听 public void actionPerformed(ActionEvent e long timemillis = System.currentTimeMillis(; /得到系统时间 SimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss; /转换日期显示格式 varTime.setText(df.format(new Date(timemillis; /输出得到的时间 ; timeAction.start(; /开启线程 5 客户端5.1 MyClient(方法import java.awt.*;import java.awt.event.ActionE

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2