網(wǎng)絡(luò)聊天室課程設(shè)計(jì)報(bào)告內(nèi)附j(luò)ava代碼_第1頁
網(wǎng)絡(luò)聊天室課程設(shè)計(jì)報(bào)告內(nèi)附j(luò)ava代碼_第2頁
網(wǎng)絡(luò)聊天室課程設(shè)計(jì)報(bào)告內(nèi)附j(luò)ava代碼_第3頁
網(wǎng)絡(luò)聊天室課程設(shè)計(jì)報(bào)告內(nèi)附j(luò)ava代碼_第4頁
網(wǎng)絡(luò)聊天室課程設(shè)計(jì)報(bào)告內(nèi)附j(luò)ava代碼_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、-. z.課程設(shè)計(jì)網(wǎng)絡(luò)聊天室院(系) 別 信電學(xué)院 班 級 計(jì)算102 學(xué) 號姓 名指導(dǎo)教師時(shí) 間2013-4-182013-5-10課 程 設(shè) 計(jì) 任 務(wù) 書題目網(wǎng)絡(luò)聊天室 課程設(shè)計(jì)系 (部) 信電學(xué)院 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級 計(jì)算102 學(xué)生* 4月 18 日至 5 月 10 日共 4 周指導(dǎo)教師(簽字) 系主任(簽字) 年月日設(shè)計(jì)容及要求二、設(shè)計(jì)原始資料1電子工業(yè)JSP實(shí)用教程,阿奇編著2電子工業(yè)JAVA程序設(shè)計(jì)實(shí)用教程,葉核亞編著三、設(shè)計(jì)完成后提交的文件和圖表1計(jì)算說明書局部JSP界面設(shè)計(jì)2圖紙局部:程序流程圖四、進(jìn)程安排五、主要參考資料1電子工業(yè)JSP實(shí)用教程,阿奇編著2電子工

2、業(yè)JAVA程序設(shè)計(jì)實(shí)用教程,葉核亞編著考資料成 績 評 定 表作品成績報(bào)告成績口試辯論成績總評成績-. z.目 錄 TOC o 1-3 h z u HYPERLINK l _Toc14414 課程設(shè)計(jì)概述 PAGEREF _Toc14414 4 HYPERLINK l _Toc3582 1.1問題描述 PAGEREF _Toc3582 4 HYPERLINK l _Toc1895 1.2功能需求分析 PAGEREF _Toc1895 4 HYPERLINK l _Toc31148 1.3環(huán)境需求分析 PAGEREF _Toc31148 4 HYPERLINK l _Toc23951 學(xué)生信息管

3、理系統(tǒng)軟件總體設(shè)計(jì) PAGEREF _Toc23951 5 HYPERLINK l _Toc16195 2.1整體思路 PAGEREF _Toc16195 5 HYPERLINK l _Toc31166 2.2總體設(shè)計(jì)流程圖 PAGEREF _Toc31166 6 HYPERLINK l _Toc21629 學(xué)生信息管理軟件詳細(xì)設(shè)計(jì) PAGEREF _Toc21629 7 HYPERLINK l _Toc27361 3.1.界面設(shè)計(jì) PAGEREF _Toc27361 7 HYPERLINK l _Toc9281 3.2通信功能實(shí)現(xiàn)方法 PAGEREF _Toc9281 9 HYPERLINK

4、 l _Toc28973 參考文獻(xiàn) PAGEREF _Toc28973 45-. z.課程設(shè)計(jì)概述1.1問題描述隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的開展,人們的交流方式越來越多,傳統(tǒng)的交流方式,如:信件、電報(bào)、等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí)的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今社會(huì)人們主流的聯(lián)系方式。因此,兩臺(tái)計(jì)算機(jī)之間進(jìn)展即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。因此出現(xiàn)了等聊天工具,然而等聊天工具雖然方便、實(shí)用,但是,娛樂功能太多,有很多吸引人的娛樂功能,從一定程度上來說,是一種娛樂工具,不能作為用于即時(shí)通訊、文件共享的專用工具。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、文件共享的軟件實(shí)在太少,而且,它

5、們局部都是絕對的C/S模式,對遠(yuǎn)程效勞器有非常大的依賴性,沒有徹底實(shí)現(xiàn)點(diǎn)對點(diǎn)的交流。為此,我決定開發(fā)一個(gè)專用于實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間即時(shí)通訊、文件共享的軟件,以方便兩臺(tái)計(jì)算機(jī)之間信息的交流。防止了效勞器忙或與效勞器無法連接時(shí),浪費(fèi)過多時(shí)間用于和效勞器建立連接。因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件。1.2功能需求分析實(shí)現(xiàn)網(wǎng)絡(luò)聊天的功能,采用WindowsSocket或JavaSocket編程,效勞器與客戶端采用了TCP/IP連接方式,在設(shè)計(jì)聊天方案時(shí),可將所有信息發(fā)往效勞器端,再由效勞器進(jìn)展處理,效勞器端是所有信息的中心。效勞器端要保存用戶信息,可利用數(shù)據(jù)庫來實(shí)現(xiàn)這一功能,需要建立用戶信

6、息數(shù)據(jù)庫。在客戶端可采用文件系統(tǒng)保存聊天紀(jì)錄和用戶??赏ㄟ^閃動(dòng)托盤圖標(biāo)和播放不同的音樂提示信息到來及好友上線等信息??赏ㄟ^建立消息鏈表來保存用戶接收的各種消息。1.3環(huán)境需求分析運(yùn)行環(huán)境:Windows 9*、2000、*P、Windows 7必要環(huán)境:JDK 1.6以上、eclipse開發(fā)環(huán)境硬件環(huán)境:CPU 400MHz以上,存512MB以上學(xué)生信息管理系統(tǒng)軟件總體設(shè)計(jì)2.1整體思路該C/S模式的聊天系統(tǒng),就是效勞器來提供效勞端連接響應(yīng),客戶端主動(dòng)的發(fā)起連接請求。當(dāng)多個(gè)用戶同時(shí)連接到效勞器時(shí),經(jīng)由效勞器的接收與轉(zhuǎn)發(fā)便可以實(shí)現(xiàn)客戶之間的通信。對于整體系統(tǒng)的流程,也是分為兩局部,即客戶端的發(fā)起

7、請求,效勞器響應(yīng)請求。首先是客戶端的登陸,客戶端在登陸時(shí),必須設(shè)置所想要連接的效勞器,然后客戶端就會(huì)根據(jù)設(shè)置的效勞器IP地址,向效勞器發(fā)起建立連接請求。而效勞器端是始終在監(jiān)聽網(wǎng)絡(luò)狀態(tài)的,主要檢測到有一個(gè)連接請求,則效勞器就會(huì)給當(dāng)前的發(fā)起端分配一個(gè)效勞線程,用于處理它的各種請求。對于客戶端的各種請求,實(shí)際上都是通過在客戶發(fā)往效勞器的各種字符流區(qū)分的,具體的方法就是在消息的頭部以及尾部添加特殊字符串,從而實(shí)現(xiàn)效勞器對消息請求的識別。比方對于登陸信息,消息的頭部就是PEOPLO,而對于私聊中的消息,頭部就是SEC,其他的同理都添加了頭部。當(dāng)然,對于客戶端來說,這些都是透明的,用戶的操作并沒有受到任何

8、影響。在效勞器端,消息被檢測分析后,變回根據(jù)具體的目的進(jìn)展處理,比方是私聊消息,效勞器便會(huì)根據(jù)其尾部的目的信息,向目標(biāo)端轉(zhuǎn)發(fā)該條消息。這里額外要說的是,該系統(tǒng)特別的對用戶發(fā)來的消息進(jìn)展了加密處理,即用戶的各種具體信息,不僅能夠防止向第三方的泄漏,而且即使效勞器端出現(xiàn)異常,信息也不會(huì)泄漏。對于私聊的方式,該系統(tǒng)所采用的方法類似于QQ的通信方式,由發(fā)起方主動(dòng)連接,當(dāng)目的方接收到連接請求后,會(huì)主動(dòng)建立一個(gè)私聊窗口,從而 實(shí)現(xiàn)私聊。2.2總體設(shè)計(jì)流程圖ServerClient建立效勞器監(jiān)聽socket建立連接創(chuàng)立socket向效勞器發(fā)請求等待并接收連接請求接收請求后創(chuàng)立socket連接InputStr

9、eam開場通信InputStreamOutputStreamOutputStream關(guān)閉socket完畢通信關(guān)閉socket學(xué)生信息管理軟件詳細(xì)設(shè)計(jì)3.1.界面設(shè)計(jì)由于這里界面設(shè)計(jì)源代碼比擬簡單,這里不再列出。3.1.1 效勞器界面設(shè)計(jì)效勞器界面3.1.2客戶端界面設(shè)計(jì)登陸界面注冊界面聊天室界面3.2通信功能實(shí)現(xiàn)方法列舉局部實(shí)現(xiàn)通信功能的主要代碼AppServer.java文件publicclass AppServer e*tends Thread private ServerSocket serverSocket;private ServerFrame sFrame;privatestati

10、cVectoruserOnline = newVector(1, 1);privatestaticVectorv = newVector(1, 1);/* * 創(chuàng)立效勞器 啟動(dòng)效勞監(jiān)聽1001端口* */public AppServer() sFrame = new ServerFrame();try serverSocket = new ServerSocket(1001);/ 獲取效勞器的主機(jī)名和IP地址InetAddress address = InetAddress.getLocalHost();sFrame.t*tServerName.setTe*t(address.getHostN

11、ame();sFrame.t*tIP.setTe*t(address.getHostAddress();sFrame.t*tPort.setTe*t(1001); catch (IOE*ception e) fail(e, 不能啟動(dòng)效勞!);sFrame.t*tStatus.setTe*t(已啟動(dòng).);this.start(); / 啟動(dòng)線程/* * 退出效勞器 * * param e * 異常 * param str * 退出信息 */publicstaticvoid fail(E*ception e, String str) System.out.println(str + 。 + e);

12、/* * 監(jiān)聽客戶的請求,當(dāng)有用戶請求時(shí)創(chuàng)立 Connection線程*/publicvoid run() try while (true) / 監(jiān)聽并承受客戶的請求Socket client = serverSocket.accept();new Connection(sFrame, client, userOnline, v); / 支持多線程/ System.out.println(userLength:+userLength); catch (IOE*ception e) System.out.println(不能監(jiān)聽);/* * 啟動(dòng)效勞器 */publicstaticvoid ma

13、in(String args) new AppServer();ServerFrame.java文件publicclass ServerFrame e*tends JFrame implements ActionListener publicJListlist;/* * */privatestaticfinallongserialVersionUID = -20L;/ 效勞器信息面板JPanel pnlServer, pnlServerInfo;JLabel lblStatus, lblNumber, lblMa*, lblServerName, lblProtocol, lblIP,lblP

14、ort, lblLog;public JTe*tField t*tStatus, t*tNumber, t*tMa*, t*tServerName, t*tProtocol, t*tIP,t*tPort;utton btnStop, btnSaveLog;public Te*tArea taLog;JTabbedPane tpServer;public Te*tArea taMessage;/ 用戶信息面板JPanel pnlUser;public JLabel lblMessage, lblUser, lblNotice, lblUserCount;JListlstUser;JScrollP

15、ane spUser;JTe*tField t*tNotice;utton btnSend, btnKick;public String ti = ;public String serverMessage =;public ServerFrame() / 效勞器窗口super(HappyChat聊天效勞器);setSize(550, 500);setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);setResizable(false);Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();

16、/ 在屏幕居中顯示Dimension fra = this.getSize();if (fra.width scr.width) fra.width = scr.width;if (fra.height scr.height) fra.height = scr.height;this.setLocation(scr.width - fra.width) / 2,(scr.height - fra.height) / 2);/ =效勞器信息面板=pnlServer = new JPanel();pnlServer.setLayout(null);pnlServerInfo = new JPane

17、l(new GridLayout(14, 1);pnlServerInfo.setBorder(BorderFactory.createpoundBorder(BorderFactory.createTitledBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1);lblStatus = new JLabel(當(dāng)前狀態(tài):);t*tStatus = new JTe*tField(10);t*tStatus.setEditable(false);lblNumber = new JLabel(當(dāng)前在線人數(shù):);t*tNumber = new JT

18、e*tField(0 人, 10);t*tNumber.setEditable(false);lblMa* = new JLabel(最多在線人數(shù):);t*tMa* = new JTe*tField(50 人, 10);t*tMa*.setEditable(false);lblServerName = new JLabel(效勞器名稱:);t*tServerName = new JTe*tField(10);t*tServerName.setEditable(false);lblProtocol = new JLabel(訪問協(xié)議:);t*tProtocol = new JTe*tField(

19、HTTP, 10);t*tProtocol.setEditable(false);lblIP = new JLabel(效勞器IP:);t*tIP = new JTe*tField(10);t*tIP.setEditable(false);lblPort = new JLabel(效勞器端口:);t*tPort = new JTe*tField(8000, 10);t*tPort.setEditable(false);btnStop = new utton(關(guān)閉效勞器(C);btnStop.addActionListener(new ActionListener() publicvoid ac

20、tionPerformed(ActionEvent arg0) closeServer(););lblLog = new JLabel(效勞器日志);taLog = new Te*tArea(20, 50);btnSaveLog = new utton(保存日志(S);btnSaveLog.addActionListener(new ActionListener() publicvoid actionPerformed(ActionEvent arg0) saveLog(););pnlServerInfo.add(lblStatus);pnlServerInfo.add(t*tStatus);

21、pnlServerInfo.add(lblNumber);pnlServerInfo.add(t*tNumber);pnlServerInfo.add(lblMa*);pnlServerInfo.add(t*tMa*);pnlServerInfo.add(lblServerName);pnlServerInfo.add(t*tServerName);pnlServerInfo.add(lblProtocol);pnlServerInfo.add(t*tProtocol);pnlServerInfo.add(lblIP);pnlServerInfo.add(t*tIP);pnlServerInf

22、o.add(lblPort);pnlServerInfo.add(t*tPort);pnlServerInfo.setBounds(5, 5, 100, 400);lblLog.setBounds(110, 5, 100, 30);taLog.setBounds(110, 35, 400, 370);btnStop.setBounds(200, 410, 120, 30);btnSaveLog.setBounds(320, 410, 120, 30);pnlServer.add(pnlServerInfo);pnlServer.add(lblLog);pnlServer.add(taLog);

23、pnlServer.add(btnStop);pnlServer.add(btnSaveLog);/ =在線用戶面板=pnlUser = new JPanel();pnlUser.setLayout(null);lblMessage = new JLabel(用戶消息);taMessage = new Te*tArea(20, 20);lblNotice = new JLabel(通知:);t*tNotice = new JTe*tField(20);btnSend = new utton(發(fā)送(S);btnSend.setEnabled(true);btnSend.addActionList

24、ener(new ActionListener() publicvoid actionPerformed(ActionEvent arg0) serverMessage(););lblUserCount = new JLabel(在線總?cè)藬?shù) 0 人);btnKick = new utton(踢人(K);btnKick.addActionListener(new ActionListener() publicvoid actionPerformed(ActionEvent arg0) tiRen(););lblUser = new JLabel(在線用戶列表);lstUser = newJLis

25、t();lstUser.setVisibleRowCount(17);lstUser.setFi*edCellWidth(180);/指定的固定單元格寬度值,而不是從列表元素計(jì)算而來的寬度值lstUser.setFi*edCellHeight(18);spUser = new JScrollPane();spUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);spUser.getViewport().setView(lstUser);lblMessage.setBounds(5, 5, 100, 25);

26、taMessage.setBounds(5, 35, 300, 360);lblUser.setBounds(310, 5, 100, 25);spUser.setBounds(310, 35, 220, 360);lblNotice.setBounds(5, 410, 40, 25);t*tNotice.setBounds(50, 410, 160, 25);btnSend.setBounds(210, 410, 80, 25);lblUserCount.setBounds(320, 410, 100, 25);btnKick.setBounds(440, 410, 80, 25);pnlU

27、ser.add(lblMessage);pnlUser.add(taMessage);pnlUser.add(lblUser);pnlUser.add(spUser);list = newJList();list.setListData(new String );spUser.setViewportView(list);pnlUser.add(lblNotice);pnlUser.add(t*tNotice);pnlUser.add(btnSend);pnlUser.add(lblUserCount);pnlUser.add(btnKick);/ =主標(biāo)簽面板=tpServer = new J

28、TabbedPane(JTabbedPane.TOP);tpServer.add(效勞器管理, pnlServer);tpServer.add(用戶信息管理, pnlUser);this.getContentPane().add(tpServer);setVisible(true);protectedvoid serverMessage() / TODO 自動(dòng)生成方法存根this.serverMessage = t*tNotice.getTe*t();t*tNotice.setTe*t();protectedvoid closeServer() / TODO 自動(dòng)生成方法存根this.disp

29、ose();/this.resprotectedvoid saveLog() / TODO 自動(dòng)生成方法存根try FileOutputStream fileoutput = new FileOutputStream(log.t*t,true);String temp = taMessage.getTe*t();fileoutput.write(temp.getBytes();fileoutput.close();JOptionPane.showMessageDialog(null, 記錄保存在log.t*t); catch (E*ception e) System.out.println(e

30、);protectedvoid tiRen() / TODO 自動(dòng)生成方法存根ti = list.getSelectedValue().toString();log(Ti:+ti);privatevoid log(String string) / TODO 自動(dòng)生成方法存根String newta = taMessage.getTe*t();newta += (n+string);taMessage.setTe*t(newta);publicvoid actionPerformed(ActionEvent evt) publicstaticvoid main(String args) new

31、ServerFrame();Connection.java文件publicclass Connection e*tends Thread /* * 與客戶端通訊Socket */private Socket netClient;/* * 在線用戶列表 */private Vector userOnline;/* * 聊天信息 */private Vector userChat;/* * 從客戶到效勞器 輸入流 */private ObjectInputStream fromClient;/* * 傳到客戶端 打印流 */private PrintStream toClient;/* * 注冊用

32、戶列表 */privatestaticVectorvList = newVector();/* * 臨時(shí)對象 */private Object obj;/* * 效勞器日志窗體 */private ServerFrame sFrame;SuppressWarnings(unchecked)/* * 創(chuàng)立與客戶端通訊*/public Connection(ServerFrame frame, Socket client, Vector u, Vector c) netClient = client;userOnline = u;userChat = c;sFrame = frame;try /

33、發(fā)生雙向通信/ 檢索客戶輸入fromClient = new ObjectInputStream(netClient.getInputStream();/ 效勞器寫到客戶toClient = new PrintStream(netClient.getOutputStream(); catch (IOE*ception e) try netClient.close(); catch (IOE*ception e1) System.out.println(不能建立流 + e1);return;this.start();/* * 處理與客戶端的通訊線程 */publicvoid run() try

34、/ obj是Object類的對象obj = (Object) fromClient.readObject();if (obj.getClass().getName().equals(Customer) /serverLogin();serverLoginDB();if (obj.getClass().getName().equals(Register_Customer) /serverRegiste();serverRegisteDB();if (obj.getClass().getName().equals(Message) serverMessage();if (obj.getClass(

35、).getName().equals(Chat) serverChat();if (obj.getClass().getName().equals(E*it) serverE*it(); catch (IOE*ception e) System.out.println(e); catch (ClassNotFoundE*ception e1) System.out.println(讀對象發(fā)生錯(cuò)誤! + e1); finally try netClient.close(); catch (IOE*ception e) System.out.println(e);/* * * 登錄處理 */Sup

36、pressWarnings(deprecation)publicvoid serverLogin() try Customer clientMessage2 = (Customer) obj;/ 讀文件FileInputStream file3 = new FileInputStream(user.t*t);ObjectInputStream objInput1 = new ObjectInputStream(file3);vList = (Vector) objInput1.readObject();int find = 0; / 查找判斷標(biāo)志/ System.out.println(fin

37、d);for (int i = 0; i vList.size(); i+) Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage2.custName) find = 1;if (!reg.custPassword.equals(clientMessage2.custPassword) toClient.println(密碼不正確);break; else / 判斷是否已經(jīng)登錄int login_flag = 0;for (int a = 0; a

38、 = 50) toClient.println(登錄人數(shù)過多,請稍候再試);break;if (login_flag = 0) clientMessage2.custHead = reg.head;/ getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println(登錄成功);Date t = new Date();log(用戶 + clientMessage2.custName + 登錄成功,+ 登錄時(shí)間: + t.toLocaleString() + n);f

39、reshServerUserList();break; else toClient.println(該用戶已登錄); else continue;if (find = 0) toClient.println(沒有這個(gè)用戶,請先注冊);file3.close();objInput1.close();fromClient.close(); catch (ClassNotFoundE*ception e) System.out.println(e); catch (IOE*ception e) System.out.println(e);/* * * 登錄處理 * * throws E*ceptio

40、n */SuppressWarnings(deprecation)publicvoid serverLoginDB() try Customer clientMessage2 = (Customer) obj;String name = clientMessage2.custName;String pass = clientMessage2.custPassword;String sql = select * from yonghu where custName= + name + ;ResultSet rs = DB.e*ecuteQuery(sql);System.out.println(

41、sql: + sql);boolean login = false;String head=;while (rs.ne*t() String ps=rs.getString(custPassword).toString();System.out.println(ps:+ps+);System.out.println(pass:+pass+);if (ps.equals(pass.toString() login = true;System.out.println(logined:);System.out.println(pareTo:+ps.pareTo(pass);head=rs.getSt

42、ring(head);System.out.println(head:+rs.getString(head);System.out.println(login:+login);if (!login) toClient.println(密碼不正確);return;/ 判斷是否已經(jīng)登錄int login_flag = 0;for (int a = 0; a = 50) toClient.println(登錄人數(shù)過多,請稍候再試);return;if (login_flag = 0) System.out.println(head:+head);clientMessage2.custHead =he

43、ad;/ getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println(登錄成功);Date t = new Date();log(用戶 + clientMessage2.custName + 登錄成功, + 登錄時(shí)間:+ t.toLocaleString() + n);freshServerUserList();return; else toClient.println(該用戶已登錄);fromClient.close(); catch (E*ception

44、e) e.printStackTrace();/* * 刷新效勞器日志窗體在線列表 * */privatevoid freshServerUserList() String userList = new String50;Customer cus = null;for (int j = 0; j userOnline.size(); j+) cus = (Customer) userOnline.get(j);userListj = cus.custName;sFrame.list.setListData(userList);sFrame.t*tNumber.setTe*t( + userOn

45、line.size();sFrame.lblUserCount.setTe*t(當(dāng)前在線人數(shù): + userOnline.size();/ System.out.println(fresh ok);/* * 注冊處理 */SuppressWarnings( unchecked, deprecation )publicvoid serverRegiste() try int flag = 0; / 是否重名判斷標(biāo)志Register_Customer clientMessage = (Register_Customer) obj;File fList = new File(user.t*t);if

46、 (fList.length() != 0)/ 判斷是否是第一個(gè)注冊用戶ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(fList);vList = (Vector) objInput.readObject();/ 判斷是否有重名for (int i = 0; i vList.size(); i+) Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage.c

47、ustName) toClient.println(注冊名重復(fù),請另外選擇);flag = 1;break; elseif (reg.custName.equals(所有人) toClient.println(制止使用此注冊名,請另外選擇);flag = 1;break;if (flag = 0) / 添加新注冊用戶vList.addElement(clientMessage);/ 將向量中的類寫回文件FileOutputStream file = new FileOutputStream(fList);ObjectOutputStream objout = new ObjectOutputS

48、tream(file);objout.writeObject(vList);/ 發(fā)送注冊成功信息toClient.println(clientMessage.custName + 注冊成功);Date t = new Date();log(用戶 + clientMessage.custName + 注冊成功, + 注冊時(shí)間:+ t.toLocaleString() + n);file.close();objout.close();fromClient.close(); catch (ClassNotFoundE*ception e) System.out.println(e); catch (

49、IOE*ception e) System.out.println(e);/* * 注冊處理 */SuppressWarnings( unchecked, deprecation )publicvoid serverRegisteDB() try intflag = 0; / 是否重名判斷標(biāo)志Register_Customer clientMessage = (Register_Customer) obj;String sql = select * from yonghu where custName=+ clientMessage.custName + ;ResultSet rs = DB.

50、e*ecuteQuery(sql);System.out.println(sql: + sql);boolean reg = false;while (rs.ne*t() reg = true;ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();for(int i=1;i=numberOfColumns;i+)String me=rsmd.getColumnName(i);String v=rs.getString(i);System.out.println(me+:+v);

51、System.out.println();System.out.println(reg:+reg);if (reg) toClient.println(注冊名重復(fù),請另外選擇);return;if (clientMessage.custName.equals(所有人) toClient.println(制止使用此注冊名,請另外選擇);return;sql = insert into yonghu(custName,custPassword,age,se*,email,head) values(+ clientMessage.custName+ ,+ clientMessage.custPass

52、word+ ,+ clientMessage.age+ ,+ clientMessage.se*+ ,+ clientMessage.email+ , + clientMessage.head + );System.out.println(c:+sql);DB.e*ecuteUpdate(sql);toClient.println(clientMessage.custName + 注冊成功);Date t = new Date();log(用戶 + clientMessage.custName + 注冊成功, + 注冊時(shí)間:+ t.toLocaleString() + n);fromClien

53、t.close(); catch (E*ception e) e.printStackTrace();System.out.println(e);/* * 發(fā)送信息處理 */publicvoid serverMessage() try Message mess = new Message();mess.userOnLine = userOnline;mess.chat = userChat;mess.ti = sFrame.ti;mess.serverMessage = + sFrame.serverMessage;ObjectOutputStream outputstream = new O

54、bjectOutputStream(netClient.getOutputStream();outputstream.writeObject(Message) mess);netClient.close();outputstream.close(); catch (IOE*ception e) /* * 增加信息處理 */publicvoid serverChat() / 將接收到的對象值賦給聊天信息的序列化對象Chat cObj = new Chat();cObj = (Chat) obj;/ chenmincObj.chatMessage = WordFilter.filter(cObj.chatMessage);chatLog(cObj);/ 將聊天信息的序列化對象填加到保存聊天信息的矢量中user

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論