版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀
2、袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄
3、膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈
4、羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃
5、膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇
6、肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄
7、袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄薆蚇肆膃蚈袂羂膂莈蚅袈膁蒀袁膆膁薃蚄肂芀蚅衿羈艿蒞螞襖羋薇袇袀芇蠆螀腿芆荿羆肅芅蒁螈羈芅薄羄袇莄蚆螇膅莃蒞薀肁莂蒈螅羇莁蝕薈羃莀莀袃衿荿蒂蚆膈荿薄袂肄莈蚇蚄羀蕆莆袀袆蒆葿蚃膅蒅薁袈肁蒄螃蟻肇蒃蒃羆羃肀薅蝿袈聿蚈羅膇肈莇螈肅肇蒀羃罿膇薂螆裊膆蚄蕿?zāi)f膅蒄螄膀膄 黔南民族師范學(xué)院 計(jì)算機(jī)科學(xué)系計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告課題名稱: 簡(jiǎn)單聊天程序 姓 名: 學(xué) 號(hào): 專業(yè)班級(jí): 系 (院): 計(jì)算機(jī)科學(xué)系 指導(dǎo)老師: 設(shè)計(jì)時(shí)間: 設(shè)計(jì)地點(diǎn): 1、
8、 實(shí)驗(yàn)?zāi)康暮鸵?. 實(shí)驗(yàn)?zāi)康?a。掌握網(wǎng)絡(luò)編程的知識(shí)和技能。 b。熟悉網(wǎng)絡(luò)軟件的開(kāi)發(fā)過(guò)程,鍛煉解決實(shí)際問(wèn)題的能力。2. 實(shí)驗(yàn)要求a。支持多人聊天,聊天內(nèi)容可以僅僅支持文本信息。b??蛻舳顺绦蚓哂袌D形化用戶界面。2、 實(shí)驗(yàn)環(huán)境a。編程軟件:eclipseb。數(shù)據(jù)庫(kù)軟件:mysql5.0;c。工具:jdk6.0;d。硬件環(huán)境:win7系統(tǒng),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) /判斷你輸入的用戶名和密碼是否正確/如果正確,就進(jìn)入聊天界面if (verify(jtf_name.gettext().trim(), jpf_password.gettext().trim() f.setvisible(false);chatutil chatutil=new chatutil(); else /否則,彈出對(duì)話框joptionpane.showm
13、essagedialog(f, 你的輸入有誤,請(qǐng)重新輸入!););bt_regist = new button(注冊(cè));bt_regist.addmouselistener(new mouseadapter() /點(diǎn)擊之后進(jìn)入注冊(cè)頁(yè)面overridepublic void mouseclicked(mouseevent e) f.setvisible(false);new regist(););bt_cancle = new button(重置);bt_cancle.addmouselistener(new mouseadapter() /點(diǎn)擊重置,使用戶名框和密碼框?yàn)榭誳verridepub
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() /點(diǎn)擊窗體右上角的“x”時(shí),退出應(yīng)用程序overridepublic void windowclosing(windowevent e) system.exit(0););public login() initframe();public static void main(string args) new login();public
17、 void reset() /設(shè)置用戶名文本框和密碼文本框?yàn)榭誮tf_name.settext();jpf_password.settext();public boolean verify(string name, string password) /驗(yàn)證用戶的用戶名和密碼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(確認(rèn)密碼:);tf_name = new textfield(20);tf_password = new textfield(20);tf_passwordagain = new textfield(20);bt_ok = new button(注冊(cè));bt_ok.addmouselistener(new mouseadapter() overridepublic void mouseclicked(mouseevent e) if (tf_password.gettext().trim().equals(/判斷密碼框和確認(rèn)密碼框 的密碼是否一樣tf_passwordag
23、ain.gettext().trim() /一致時(shí)if (regist() /進(jìn)行注冊(cè)成功f.setvisible(false);/隱藏注冊(cè)頁(yè)面new login().f.setvisible(true);/顯示登錄頁(yè)面 else /密碼框和確認(rèn)密碼框 的密碼不一致時(shí),彈出對(duì)話框joptionpane.showmessagedialog(f, 兩次密碼輸入有誤,請(qǐng)重試!););bt_cancle = new button(取消);bt_cancle.addmouselistener(new mouseadapter() /點(diǎn)擊取消按鈕時(shí)overridepublic void mouseclic
24、ked(mouseevent e) close();/隱藏注冊(cè)窗體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() /點(diǎn)擊右上角的“x”時(shí),隱藏注冊(cè)窗體overridepublic void windowclosing(windowevent e) close(););public void close() /隱藏注冊(cè)窗體f.setvisible(false);public boolean regist() /寫(xiě)數(shù)據(jù)
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() /存在時(shí),彈出相應(yīng)的對(duì)話框joptionpane.showmessagedialog(f, name + 已經(jīng)存在); else /不出在且不為空時(shí)寫(xiě)入數(shù)據(jù)庫(kù)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, 注冊(cè)成功!);return true; else joptionpane.showmessagedialog(f, 注冊(cè)失??!); else /用戶名或密碼為空時(shí),彈出提示對(duì)話框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(請(qǐng)輸入服務(wù)器的ip:);l_name=new label(請(qǐng)輸入你的名字:);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()/當(dāng)在按“enter”鍵時(shí),發(fā)送信息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()/點(diǎn)擊退出按鈕時(shí),退出程序overridepublic void mouseclicked(mouseevent e) exit(););bt_send=new button(發(fā)送);bt_send
37、.addmouselistener(new mouseadapter()/點(diǎn)擊發(fā)送按鈕時(shí),發(fā)送信息overridepublic void mouseclicked(mouseevent e) send(););ta_msg=new textarea();ta_msg.seteditable(false);/聊天信息的顯示區(qū)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()/點(diǎn)擊右上角的“x”時(shí),退出程序overridepublic void windowclosing(windowevent e) exit();); private void initnet()/初始網(wǎng)絡(luò)的鏈接 try socket s = new socket(,8186);/以本機(jī)作為服務(wù)器進(jìn)行鏈接 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()/把聊天信息發(fā)送出去string name=tf_name.gettext();string text=tf_send.gettext();string time=gettime();/獲取當(dāng)前的
42、時(shí)間tf_send.settext(); pw.println(name+ +time+:+text); pw.flush();private void exit()/窗體退出system.exit(0);private string gettime()/獲取當(dāng)前的 時(shí)間calendar calendar=calendar.getinstance();date date=calendar.gettime();simpledateformat sdf=new simpledateformat(yyyy-mm-dd hh:mm:ss);/設(shè)置日期的格式return sdf.format(date)
43、;private void browse()/打開(kāi)歷史記錄desktop desktop=desktop.getdesktop();file file=new file(temp.txt);try desktop.edit(file); catch (ioexception e) e.printstacktrace(); public void receive()/獲取服務(wù)器發(fā)來(lái)的聊天信息 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);/監(jiān)聽(tīng)8186端口arraylist sockets = new arraylist();/用來(lái)存儲(chǔ)連接當(dāng)服務(wù)器的客戶端的socketwhile (true) socket s = ss.accept();/客戶端和服務(wù)器端建立連接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() /把單個(gè)客戶端的信息發(fā)送給每一個(gè)客戶端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) /把聊天信息進(jìn)行存儲(chǔ)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、 實(shí)驗(yàn)數(shù)據(jù)、結(jié)果分析login.java運(yùn)行結(jié)果: a。沒(méi)有輸入用戶名和密碼時(shí): 點(diǎn)擊登錄: 點(diǎn)擊注冊(cè): b。 輸入錯(cuò)誤的用戶名和密碼: 點(diǎn)擊登錄: c。輸入正確的用戶名和密碼: regist.java運(yùn)行結(jié)果 a。直接點(diǎn)擊注冊(cè): b。輸入已有的用戶名進(jìn)行注冊(cè): 點(diǎn)擊注冊(cè): c。輸入數(shù)據(jù)庫(kù)中沒(méi)有的用戶名但兩次密碼不一致: 點(diǎn)擊注冊(cè): d。進(jìn)行正確的輸入 點(diǎn)擊注冊(cè): chatutil.java a。兩用戶進(jìn)行聊天: 用戶huyong: 用戶ou: b。打開(kāi)聊天記錄 6、 總結(jié)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版特許經(jīng)營(yíng)權(quán)授予協(xié)議
- 買賣協(xié)議書(shū)匯編六篇
- 2024年度砸墻工程設(shè)計(jì)與施工監(jiān)理合同3篇
- 2024年生產(chǎn)協(xié)作合同3篇
- 2024年版食堂廚房管理服務(wù)合同3篇
- 活動(dòng)計(jì)劃模板集錦五篇
- 大學(xué)生學(xué)習(xí)計(jì)劃15篇
- 收購(gòu)合同匯編10篇
- 對(duì)甲氧基苯甲醛項(xiàng)目商業(yè)計(jì)劃書(shū)
- 學(xué)校后勤干事崗位職責(zé)總結(jié)
- 醫(yī)院輸血質(zhì)量管理考核標(biāo)準(zhǔn)
- 七年級(jí)語(yǔ)文上冊(cè):15、《古代詩(shī)歌四首》教案
- 氣道評(píng)估與處理課件
- 腦血管病的介入診療課件
- RCS-9626CN電動(dòng)機(jī)保護(hù)測(cè)控裝置
- 苗木供貨服務(wù)計(jì)劃方案
- 回轉(zhuǎn)支承實(shí)驗(yàn)臺(tái)測(cè)試系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 全員安全生產(chǎn)責(zé)任考核表
- 董事長(zhǎng)調(diào)研方案
- 危險(xiǎn)化學(xué)品MSDS(次氯酸鈉溶液)
- 某物業(yè)公司薪酬管理制度
評(píng)論
0/150
提交評(píng)論