计算机网络课程设计9611930353_第1页
计算机网络课程设计9611930353_第2页
计算机网络课程设计9611930353_第3页
计算机网络课程设计9611930353_第4页
计算机网络课程设计9611930353_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀

2、袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄

3、膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈

4、羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃

5、膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇

6、肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄

7、袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿莅蚂袄芈薇袇袀芇虿螀腿芆荿羆肅芅蒁螈羁芅薄羄袇莄蚆螇膅莃莅薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蒇莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蚁肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肃肇蒀羃罿膇薂螆袅膆蚄蕿膄膅蒄螄膀膄 黔南民族师范学院 计算机科学系计算机网络课程设计报告课题名称: 简单聊天程序 姓 名: 学 号: 专业班级: 系 (院): 计算机科学系 指导老师: 设计时间: 设计地点: 1、

8、 实验目的和要求1. 实验目的 a。掌握网络编程的知识和技能。 b。熟悉网络软件的开发过程,锻炼解决实际问题的能力。2. 实验要求a。支持多人聊天,聊天内容可以仅仅支持文本信息。b。客户端程序具有图形化用户界面。2、 实验环境a。编程软件:eclipseb。数据库软件:mysql5.0;c。工具:jdk6.0;d。硬件环境:win7系统,intel core2 duo3、 程序的逻辑框图 4、 程序的源代码login.javapackage chat4;import java.awt.borderlayout;import java.awt.button;import java.awt.dim

9、ension;import java.awt.frame;import java.awt.label;import java.awt.panel;import java.awt.toolkit;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.sql.connection;import java.sql.drivermanager;import j

10、ava.sql.resultset;import java.sql.statement;import javax.swing.joptionpane;import javax.swing.jpasswordfield;import javax.swing.jtextfield;public class login private string name;frame f;label l_name, l_password;jtextfield jtf_name;jpasswordfield jpf_password;button bt_ok, bt_cancle, bt_regist;panel

11、p_top, p_center, p_bottom;toolkit toolkit;dimension screensize, framesize;connection connection;statement statement;resultset resultset;public void initframe() /初始化窗体f = new frame(login);l_name = new label(名字);l_password = new label(密码);jtf_name = new jtextfield(20);jpf_password = new jpasswordfield

12、(20);bt_ok = new button(登录);bt_ok.addmouselistener(new mouseadapter() overridepublic void mouseclicked(mouseevent e) /判断你输入的用户名和密码是否正确/如果正确,就进入聊天界面if (verify(jtf_name.gettext().trim(), jpf_password.gettext().trim() f.setvisible(false);chatutil chatutil=new chatutil(); else /否则,弹出对话框joptionpane.showm

13、essagedialog(f, 你的输入有误,请重新输入!););bt_regist = new button(注册);bt_regist.addmouselistener(new mouseadapter() /点击之后进入注册页面overridepublic void mouseclicked(mouseevent e) f.setvisible(false);new regist(););bt_cancle = new button(重置);bt_cancle.addmouselistener(new mouseadapter() /点击重置,使用户名框和密码框为空overridepub

14、lic void mouseclicked(mouseevent e) reset(););p_top = new panel();p_top.add(l_name);p_top.add(jtf_name);p_center = new panel();p_center.add(l_password);p_center.add(jpf_password);p_bottom = new panel();p_bottom.add(bt_ok);p_bottom.add(bt_regist);p_bottom.add(bt_cancle);f.add(p_top, borderlayout.nort

15、h);f.add(p_center, borderlayout.center);f.add(p_bottom, borderlayout.south);f.pack();f.setresizable(false);/* * 以下 的为窗体位置 的布局,使窗体置于屏幕的正中间 */toolkit = toolkit.getdefaulttoolkit();screensize = toolkit.getscreensize();framesize = f.getsize();int height = screensize.height - framesize.height;int width =

16、 screensize.width - framesize.width;f.setlocation(width / 2, height / 2);f.setvisible(true);f.addwindowlistener(new windowadapter() /点击窗体右上角的“x”时,退出应用程序overridepublic void windowclosing(windowevent e) system.exit(0););public login() initframe();public static void main(string args) new login();public

17、 void reset() /设置用户名文本框和密码文本框为空jtf_name.settext();jpf_password.settext();public boolean verify(string name, string password) /验证用户的用户名和密码try class.forname(com.mysql.jdbc.driver);connection = drivermanager.getconnection(jdbc:mysql:/:3306/chat, root, 19890815);statement = connection.createsta

18、tement();resultset = statement.executequery(select * from usertable where name= + name+ and password= + password + and state=+ n);if (resultset.next() return true; else return false; catch (exception e) e.printstacktrace();return false;public void setname(string name) = name;public string

19、getname() return name;regist.javaimport java.awt.borderlayout;import java.awt.button;import java.awt.dimension;import java.awt.frame;import java.awt.label;import java.awt.panel;import java.awt.textfield;import java.awt.toolkit;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;impor

20、t java.awt.event.windowadapter;import java.awt.event.windowevent;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;import java.sql.sqlexception;import java.sql.statement;import javax.swing.joptionpane;public class regist frame f;label l_name, l_password, l_passwordag

21、ain;textfield tf_name, tf_password, tf_passwordagain;button bt_ok, bt_cancle;panel p_name, p_password, p_passwordagain, p_bt, p_top;toolkit toolkit;dimension screensize, framesize;public void init() /初始化窗体f = new frame(regist);l_name = new label(输入名字:);l_password = new label(输入密码:);l_passwordagain =

22、 new label(确认密码:);tf_name = new textfield(20);tf_password = new textfield(20);tf_passwordagain = new textfield(20);bt_ok = new button(注册);bt_ok.addmouselistener(new mouseadapter() overridepublic void mouseclicked(mouseevent e) if (tf_password.gettext().trim().equals(/判断密码框和确认密码框 的密码是否一样tf_passwordag

23、ain.gettext().trim() /一致时if (regist() /进行注册成功f.setvisible(false);/隐藏注册页面new login().f.setvisible(true);/显示登录页面 else /密码框和确认密码框 的密码不一致时,弹出对话框joptionpane.showmessagedialog(f, 两次密码输入有误,请重试!););bt_cancle = new button(取消);bt_cancle.addmouselistener(new mouseadapter() /点击取消按钮时overridepublic void mouseclic

24、ked(mouseevent e) close();/隐藏注册窗体new login().f.setvisible(true);/显示登录窗体);p_name = new panel();p_name.add(l_name);p_name.add(tf_name);p_password = new panel();p_password.add(l_password);p_password.add(tf_password);p_passwordagain = new panel();p_passwordagain.add(l_passwordagain);p_passwordagain.add(

25、tf_passwordagain);p_top = new panel();p_top.setlayout(new borderlayout();p_top.add(p_name, borderlayout.north);p_top.add(p_password, borderlayout.center);p_top.add(p_passwordagain, borderlayout.south);p_bt = new panel();p_bt.add(bt_ok);p_bt.add(bt_cancle);f.add(p_top, borderlayout.north);f.add(p_bt,

26、 borderlayout.south);/* *以下为使窗体位于屏幕的中间 */toolkit = toolkit.getdefaulttoolkit();screensize = toolkit.getscreensize();int heightscreen = screensize.height;int widthscreen = screensize.width;f.pack();framesize = f.getsize();int heightframe = framesize.height;int widthframe = framesize.width;f.setlocati

27、on(widthscreen - widthframe) / 2,(heightscreen - heightframe) / 2);f.setresizable(false);f.setvisible(true);f.addwindowlistener(new windowadapter() /点击右上角的“x”时,隐藏注册窗体overridepublic void windowclosing(windowevent e) close(););public void close() /隐藏注册窗体f.setvisible(false);public boolean regist() /写数据

28、的操作string name = tf_name.gettext().trim();string password = tf_password.gettext().trim();connection connection = null;statement statement = null;resultset resultset = null;try class.forname(com.mysql.jdbc.driver);connection = drivermanager.getconnection(jdbc:mysql:/:3306/chat, root, 1989081

29、5);statement = connection.createstatement();/查旭该用户是否存在resultset = statement.executequery(select * from usertable where name= + name+ );if (resultset.next() /存在时,弹出相应的对话框joptionpane.showmessagedialog(f, name + 已经存在); else /不出在且不为空时写入数据库if (!.equals(name) & !.equals(password) int i = statement.execute

30、update(insert into usertable(name,password) values(+ name + , + password + );if (i 0) joptionpane.showmessagedialog(f, 注册成功!);return true; else joptionpane.showmessagedialog(f, 注册失败!); else /用户名或密码为空时,弹出提示对话框joptionpane.showmessagedialog(f, 用户名或密码不能为空); catch (exception e) e.printstacktrace(); final

31、ly try resultset.close();statement.close();connection.close(); catch (sqlexception e) e.printstacktrace();return false;public regist() init();chatutil.javaimport java.awt.borderlayout;import java.awt.button;import java.awt.desktop;import java.awt.dimension;import java.awt.frame;import java.awt.label

32、;import java.awt.panel;import java.awt.textarea;import java.awt.textfield;import java.awt.toolkit;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.windowadapter;import java.awt.event.windo

33、wevent;import java.io.bufferedreader;import java.io.file;import java.io.ioexception;import java.io.inputstreamreader;import java.io.printwriter;import .socket;import .unknownhostexception;import java.text.simpledateformat;import java.util.calendar;import java.util.date;public class chatutil frame f;

34、label l_ip,l_name;textfield tf_ip;textfield tf_name;textfield tf_send;button bt_record,bt_exit,bt_send;textarea ta_msg;panel p_ip,p_name,p_bt,p_top,p_center,p_bottom;toolkit toolkit;dimension screensize,framesize;bufferedreader br; printwriter pw; public void initutil()/初始化窗体f=new frame(chat);l_ip=n

35、ew label(请输入服务器的ip:);l_name=new label(请输入你的名字:);tf_ip=new textfield(15);tf_ip.settext();tf_ip.seteditable(false);tf_name=new textfield(15);tf_send=new textfield(50);tf_send.addactionlistener(new actionlistener()/当在按“enter”键时,发送信息overridepublic void actionperformed(actionevent e) send(););bt

36、_record=new button(历史记录);bt_record.addmouselistener(new mouseadapter()/查看历史记录overridepublic void mouseclicked(mouseevent e) browse(););bt_exit=new button(退出);bt_exit.addmouselistener(new mouseadapter()/点击退出按钮时,退出程序overridepublic void mouseclicked(mouseevent e) exit(););bt_send=new button(发送);bt_send

37、.addmouselistener(new mouseadapter()/点击发送按钮时,发送信息overridepublic void mouseclicked(mouseevent e) send(););ta_msg=new textarea();ta_msg.seteditable(false);/聊天信息的显示区p_ip=new panel();p_ip.add(l_ip);p_ip.add(tf_ip);p_name=new panel();p_name.add(l_name);p_name.add(tf_name);p_bt=new panel();p_bt.add(bt_rec

38、ord);p_bt.add(bt_exit);p_top=new panel();p_top.setlayout(new borderlayout();p_top.add(p_ip,borderlayout.north);p_top.add(p_name,borderlayout.center);p_top.add(p_bt,borderlayout.south);p_center=new panel();p_center.add(ta_msg);p_bottom=new panel();p_bottom.add(tf_send);p_bottom.add(bt_send);f.add(p_t

39、op,borderlayout.north);f.add(p_center,borderlayout.center);f.add(p_bottom,borderlayout.south);f.pack();f.setresizable(false);/* * 以下是使窗体置于屏幕的中间 */toolkit=toolkit.getdefaulttoolkit();screensize=toolkit.getscreensize();framesize=f.getsize();int height=screensize.height-framesize.height;int width=scree

40、nsize.width-framesize.width;f.setlocation(width/2,height/2);f.setvisible(true);f.addwindowlistener(new windowadapter()/点击右上角的“x”时,退出程序overridepublic void windowclosing(windowevent e) exit();); private void initnet()/初始网络的链接 try socket s = new socket(,8186);/以本机作为服务器进行链接 pw = new printwriter

41、(s.getoutputstream(); br = new bufferedreader(new inputstreamreader(s.getinputstream(); catch (unknownhostexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace(); private void send()/把聊天信息发送出去string name=tf_name.gettext();string text=tf_send.gettext();string time=gettime();/获取当前的

42、时间tf_send.settext(); pw.println(name+ +time+:+text); pw.flush();private void exit()/窗体退出system.exit(0);private string gettime()/获取当前的 时间calendar calendar=calendar.getinstance();date date=calendar.gettime();simpledateformat sdf=new simpledateformat(yyyy-mm-dd hh:mm:ss);/设置日期的格式return sdf.format(date)

43、;private void browse()/打开历史记录desktop desktop=desktop.getdesktop();file file=new file(temp.txt);try desktop.edit(file); catch (ioexception e) e.printstacktrace(); public void receive()/获取服务器发来的聊天信息 try while(true) string str = br.readline(); if(str=null) return ; ta_msg.append(str+n); catch (ioexcept

44、ion e) e.printstacktrace(); chatutil() this.initutil(); this.initnet(); public static void main(string args) chatutil c = new chatutil(); c.receive(); server.javaimport .*;import java.io.*;import java.util.*;public class server public static void main(string args) final int port = 8186;try system.ou

45、t.println(wait.);serversocket ss = new serversocket(port);/监听8186端口arraylist sockets = new arraylist();/用来存储连接当服务器的客户端的socketwhile (true) socket s = ss.accept();/客户端和服务器端建立连接system.out.println(connected.);sockets.add(s);thread t1 = new chatthread(s, sockets);t1.start(); catch (ioexception e) e.print

46、stacktrace();class chatthread extends thread socket s;arraylist sockets;public chatthread(socket s, arraylist sockets) this.s = s;this.sockets = sockets;public void run() /把单个客户端的信息发送给每一个客户端try bufferedreader in = new bufferedreader(new inputstreamreader(s.getinputstream();while (true) string str =

47、in.readline();savefile(str);for (int i = 0; i sockets.size(); i+) socket s2 = sockets.get(i);printwriter pw = new printwriter(s2.getoutputstream();pw.println(str);pw.flush(); catch (ioexception e) finally try s.close(); catch (ioexception e) private void savefile(string str) /把聊天信息进行存储file file = ne

48、w file(temp.txt);try filewriter fos = new filewriter(file, true);fos.write(str + rn);fos.close(); catch (ioexception e) e.printstacktrace();5、 实验数据、结果分析login.java运行结果: a。没有输入用户名和密码时: 点击登录: 点击注册: b。 输入错误的用户名和密码: 点击登录: c。输入正确的用户名和密码: regist.java运行结果 a。直接点击注册: b。输入已有的用户名进行注册: 点击注册: c。输入数据库中没有的用户名但两次密码不一致: 点击注册: d。进行正确的输入 点击注册: chatutil.java a。两用户进行聊天: 用户huyong: 用户ou: b。打开聊天记录 6、 总结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论