基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)66_第1頁(yè)
基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)66_第2頁(yè)
基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)66_第3頁(yè)
基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)66_第4頁(yè)
基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)66_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于JAVA的聊天(ICQ)系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn) 王沖海指導(dǎo)教師:雷剛學(xué)號(hào):0368110110地址:江西師范大學(xué)瑤湖校區(qū)軟件學(xué)院學(xué)生公寓2棟N212寢室。 :330022摘要:隨著JAVA語(yǔ)言越來(lái)越受到程序員的青睞,JAVA語(yǔ)言有著極其廣闊的發(fā)展?jié)摿Γ鞠到y(tǒng)是采用JAVA語(yǔ)言編寫(xiě)的聊天系統(tǒng),做為學(xué)習(xí)JAVA語(yǔ)言的上機(jī)的一次鍛煉。關(guān)鍵詞:JAVA聊天系統(tǒng),ICQ系統(tǒng),聊天系統(tǒng)。內(nèi)容:分析聊天(ICQ)系統(tǒng),并嘗試用Java編寫(xiě)。(備注:本系統(tǒng)部分代碼來(lái)源與參考文獻(xiàn))一序言ICQ是英文"I seek you "的簡(jiǎn)稱,中文意思是我找你。ICQ最大的功能就是即時(shí)信息交流,只要記得對(duì)

2、方的號(hào)碼,上網(wǎng)時(shí)可以呼他,無(wú)論他在哪里,只要他上網(wǎng)打開(kāi)ICQ,人們就可以隨時(shí)交流。ICQ源于以色列特拉維夫的Mirabils公司。該公司成立于年月,也就是在這個(gè)時(shí)候,互聯(lián)網(wǎng)上最出名,下載使用人數(shù)最多的免費(fèi)軟件ICQ誕生了??赡苁瞧洳粩嘣黾拥挠脩艉蛷V闊的前景以及廣泛的應(yīng)用前景和巨大的市場(chǎng)潛力,Mirabils的ICQ最終被美國(guó)在線AOL收購(gòu)。由于ICQ的成功,推動(dòng)了ICQ的本土化,就中文的ICQ而言,現(xiàn)在已經(jīng)越來(lái)越多,比如著名的深圳騰迅公司推出的OICQ(現(xiàn)在由于版權(quán)問(wèn)題,已改名為QQ2001),還有由TOM 推出的Tomq等,這些軟件技術(shù)都很好,而且簡(jiǎn)單易用,成為中國(guó)網(wǎng)民最喜歡的通信軟件。但是

3、這些公司都只提供軟件的客戶端程序免費(fèi)下載,而不提供其服務(wù)器程序,因此對(duì)于未與互聯(lián)網(wǎng)連接的私有網(wǎng)絡(luò),這些軟件就用不上了。當(dāng)然網(wǎng)上也有免費(fèi)的類似ICQ的服務(wù)器提供下載,但是好多都不提供源程序,即使有,其說(shuō)明也很簡(jiǎn)單,我很想知道它是怎么回事,所以我就試著做了。二設(shè)計(jì)為什么選擇JAVA?Java是Sun Microsystem公司的James Gosling開(kāi)發(fā)的編程語(yǔ)言。它以C+為基礎(chǔ),但是卻是一個(gè)全新的軟件開(kāi)發(fā)語(yǔ)言。Java是一個(gè)簡(jiǎn)單,面象對(duì)象,分布式,解釋性,強(qiáng)壯,安全,與系統(tǒng)無(wú)關(guān),可移植,高性能,多線程和動(dòng)態(tài)的語(yǔ)言-這是 Sun給Java的定義。Sun公司的口號(hào)就是"網(wǎng)絡(luò)就是計(jì)算機(jī)&

4、quot;,Java能使所有東西從桌面計(jì)算平穩(wěn)的轉(zhuǎn)變?yōu)榛诰W(wǎng)絡(luò)的計(jì)算,它是專門(mén)為此而建立的,并顯然是為了完成這個(gè)任務(wù)而來(lái)的。使用Java,我們可以相對(duì)輕松的一天編寫(xiě)一個(gè)有條理的網(wǎng)絡(luò)程序。今天,Java的網(wǎng)絡(luò)功能正在飛躍發(fā)展,不斷有新的特性增加到這個(gè)有價(jià)值的基礎(chǔ)上,JavaSoft實(shí)驗(yàn)室正在不斷努力使Java更加完善。2數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)可以采用任何一種流行的,Java支持的數(shù)據(jù)庫(kù),本系統(tǒng)采用了Microsoft公司的SQL Server2000作為后臺(tái)數(shù)據(jù)庫(kù)。通過(guò)對(duì)現(xiàn)在流行的一些Icq的參考,建立數(shù)據(jù)庫(kù),名為javaicq,數(shù)據(jù)庫(kù)共建立兩個(gè)表,一個(gè)是用戶的基本信息,包括呢稱,Jicq號(hào)碼等。一個(gè)是

5、用戶的好友表,包括用戶自己的號(hào)碼和好友的號(hào)碼。(1)用戶的基本信息表(表名icq)序號(hào)字段名含義數(shù)據(jù)類型NULL1Icqno用戶的號(hào)碼intNo2Nickname用戶的呢稱CharNo3Password用戶的密碼CharNo4Status用戶在線否BitNo5Ip用戶的IP地址CharYes6Info用戶的資料VarcharYes7Pic用戶的頭像號(hào)IntYes8Sex用戶性別CharYes9Email用戶的emailCharYes10Place用戶的籍貫Charyes其中Icqno字段為自動(dòng)增加。(其他還可以添加諸如 號(hào)碼等字段作為更多選擇)(2)用戶的好友表(表名friend)序號(hào)字段名含

6、義數(shù)據(jù)類型NULL1Icqno用戶的號(hào)碼IntNo2Friend好友的號(hào)碼IntNo3系統(tǒng)模式及程序(具體程序參看源程序)系統(tǒng)采用客戶/服務(wù)器摸式(如圖)1. 服務(wù)器程序: 服務(wù)器與客戶間通過(guò)套接口Socket(TCP)連接。在java中使用套接口相當(dāng)簡(jiǎn)單,Java API為處理套接口的通信提供了一個(gè)類.Socket.,使得編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序相對(duì)容易服務(wù)器采用多線程以滿足多用戶的請(qǐng)求,通過(guò)JDBC與后臺(tái)數(shù)據(jù)庫(kù)連接,并通過(guò)創(chuàng)建一個(gè)ServerSocket對(duì)象來(lái)監(jiān)聽(tīng)來(lái)自客戶的連接請(qǐng)求,默認(rèn)端口為8080,然后無(wú)限循環(huán)調(diào)用accept()方法接受客戶程序的連接服務(wù)器程序代碼如下:(部分)import

7、java.io.*; import .*; import java.sql.*; import java.util.Vector; class ServerThread extends Thread/繼承線程 private Socket socket;/定義套接口 private BufferedReader in;/定義輸入流 private PrintWriter out;/定義輸出流 int no;/定義申請(qǐng)的jicq號(hào)碼 public ServerThread(Socket s) throws IOException /線程構(gòu)造函數(shù) socket=s;/取得傳遞參數(shù) in=new B

8、ufferedReader(new InputStreamReader(socket.getInputStream();/創(chuàng)建輸入流 out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);/創(chuàng)建輸出流 start();/啟動(dòng)線程 public void run()/線程監(jiān)聽(tīng)函數(shù) try while(true) String str=in.readLine();/取得輸入字符串 if(str.equals("end")break;/如果是結(jié)束就關(guān)

9、閉連接 else if(str.equals("login") /如果是登錄 try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");/連接數(shù)據(jù)庫(kù) Connection c=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); String sql="select nickname,password from icq where icqno=?" /準(zhǔn)備從數(shù)據(jù)庫(kù)選擇呢稱和

10、密碼 PreparedStatement prepare=c.prepareCall(sql);/設(shè)定數(shù)據(jù)庫(kù)查尋條件 String icqno=in.readLine(); int g=Integer.parseInt(icqno);/取得輸入的jicq號(hào)碼 System.out.println(icqno); String passwd=in.readLine().trim();/取得輸入的密碼 System.out.println(passwd); prepare.clearParameters(); prepare.setInt(1,g);/設(shè)定參數(shù) ResultSet r=prepar

11、e.executeQuery();/執(zhí)行數(shù)據(jù)庫(kù)查尋 if(r.next()/以下比較輸入的號(hào)碼于密碼是否相同 String pass=r.getString("password").trim(); System.out.println(pass); if(passwd.regionMatches(0,pass,0,pass.length() out.println("ok");/如果相同就告訴客戶ok/并且更新數(shù)據(jù)庫(kù)用戶為在線/以及注冊(cè)用戶的ip 地址 /*register ipaddress String setip="update icq

12、set ip=? where icqno=?" PreparedStatement prest=c.prepareCall(setip); prest.clearParameters(); prest.setString(1,socket.getInetAddress().getHostAddress(); prest.setInt(2,g); int set=prest.executeUpdate(); System.out.println(set); /*ipaddress /set status online String status="update icq set

13、 status=1 where icqno=?" PreparedStatement prest2=c.prepareCall(status); prest2.clearParameters(); prest2.setInt(1,g); int set2=prest2.executeUpdate(); System.out.println(set2); /set online/否者告訴客戶失敗 else out.println("false");r.close();c.close(); else out.println("false"); Sy

14、stem.out.println("false"); r.close(); c.close(); catch (Exception e)e.printStackTrace(); socket.close(); /end login /登錄結(jié)束 /以下為處理客戶的新建請(qǐng)求else if(str.equals("new") try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");/連接數(shù)據(jù)庫(kù) Connection c2=DriverManager.getConnection("jdbc

15、:odbc:javaicq"," "," ");String newsql="insert into icq(nickname,password,email,info,place,pic) values(?,?,?,?,?,?)"/準(zhǔn)備接受用戶的呢稱,密碼,email,個(gè)人資料,籍貫,頭像等信息 PreparedStatement prepare2=c2.prepareCall(newsql); String nickname=in.readLine().trim(); String password=in.readLine

16、().trim(); String email=in.readLine().trim(); String info=in.readLine().trim(); String place=in.readLine().trim(); int picindex=Integer.parseInt(in.readLine(); prepare2.clearParameters(); prepare2.setString(1,nickname); prepare2.setString(2,password); prepare2.setString(3,email); prepare2.setString(

17、4,info); prepare2.setString(5,place); prepare2.setInt(6,picindex); int r3=prepare2.executeUpdate();/執(zhí)行數(shù)據(jù)庫(kù)添加String sql2="select icqno from icq where nickname=?"/以下告訴客戶其注冊(cè)的號(hào)碼 PreparedStatement prepare3=c2.prepareCall(sql2); prepare3.clearParameters(); prepare3.setString(1,nickname); ResultSe

18、t r2=prepare3.executeQuery(); while(r2.next() /out.println(r2.getInt(1); no=r2.getInt(1); System.out.println(no); out.println(no); out.println("ok");c2.close();/完畢 catch (Exception e)e.printStackTrace();out.println("false"); socket.close(); /end new /新建用戶結(jié)束 /以下處理用戶查找好友 else if(st

19、r.equals("find") try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c3=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /以下連接數(shù)據(jù)庫(kù),并且返回其他用戶的呢稱,性別,籍貫,個(gè)人資料等信息 String find="select nickname,sex,place,ip,email,info from icq" St

20、atement st=c3.createStatement(); ResultSet result=st.executeQuery(find); while(result.next() out.println(result.getString("nickname"); out.println(result.getString("sex"); out.println(result.getString("place"); out.println(result.getString("ip"); out.println(r

21、esult.getString("email"); out.println(result.getString("info"); /while end out.println("over"); /GET ICQNO int d,x;boolean y;/以下返回用戶的jicq號(hào)碼,頭像號(hào),及是否在線 ResultSet iset=st.executeQuery("select icqno,pic,status from icq"); while(iset.next() d=iset.getInt("icqn

22、o"); out.println(d); x=iset.getInt("pic");/pic info out.println(x); y=iset.getBoolean("status"); if (y)out.println("1"); else out.println("0"); /System.out.println(d); / end send jicqno iset.close(); /icqno end c3.close();result.close(); catch (Exception

23、e)e.printStackTrace();System.out.println("false"); /socket.close(); /end find /查找好友結(jié)束 /以下處理用戶登錄時(shí)讀取其好友資料 else if(str.equals("friend") try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c4=DriverManager.getConnection("jdbc:odbc:javaicq"," ",

24、" "); /以下連接好友表,返回用戶的好友名單 String friend="select friend from friend where icqno=?" PreparedStatement prepare4=c4.prepareCall(friend); prepare4.clearParameters(); int icqno=Integer.parseInt(in.readLine(); System.out.println(icqno); prepare4.setInt(1,icqno); ResultSet r4=prepare4.exe

25、cuteQuery(); Vector friendno=new Vector();/該矢量保存好友號(hào)碼 while(r4.next() friendno.add(new Integer(r4.getInt(1); /read friend info /以下告訴客戶其好友的呢稱,號(hào)碼,ip地址,狀態(tài),頭像,個(gè)人資料等信息 out.println(friendno.size(); for(int i=0;i<friendno.size();i+) String friendinfo="select nickname,icqno,ip,status,pic,email,info f

26、rom icq where icqno=?" PreparedStatement prepare5=c4.prepareCall(friendinfo); prepare5.clearParameters(); prepare5.setObject(1,friendno.get(i); ResultSet r5=prepare5.executeQuery(); boolean status; while(r5.next() out.println(r5.getString("nickname"); out.println(r5.getInt("icqno

27、"); out.println(r5.getString("ip"); status=r5.getBoolean("status"); if (status)out.println("1"); else out.println("0"); out.println(r5.getInt("pic"); out.println(r5.getString("email"); out.println(r5.getString("info"); /while

28、 r5.close();/for/發(fā)送完畢 out.println("over"); System.out.println("over"); c4.close();r4.close(); catch (Exception e)e.printStackTrace();System.out.println("false"); /socket.close(); /end friend /讀取好友信息完畢 /以下處理用戶添加好友 else if(str.equals("addfriend") System.out.prin

29、tln("add"); try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c6=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /連接數(shù)據(jù)庫(kù),根據(jù)接受的用戶號(hào)碼及好友號(hào)碼向好友表添加記錄 int friendicqno=Integer.parseInt(in.readLine(); System.out.println(friendicqno); int

30、myicqno=Integer.parseInt(in.readLine(); System.out.println(myicqno); String addfriend="insert into friend values(?,?)" PreparedStatement prepare6=c6.prepareCall(addfriend); prepare6.clearParameters(); prepare6.setInt(1,myicqno); prepare6.setInt(2,friendicqno); int r6=0; r6=prepare6.execute

31、Update(); if(r6=1) System.out.println("ok addfrien"); else System.out.println("false addfriend"); catch (Exception e)e.printStackTrace();System.out.println("false"); /socket.close(); System.out.println("over addfriend"); /end addfriend /用戶添加好友結(jié)束 /add new frien

32、d who add me /以下處理其他用戶如果加我,我就加他 else if(str.equals("addnewfriend") System.out.println("add"); try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c6=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /連接數(shù)據(jù)庫(kù),根據(jù)接受的用戶號(hào)碼及好友號(hào)碼向好

33、友表添加記錄 int friendicqno=Integer.parseInt(in.readLine(); System.out.println(friendicqno); int myicqno=Integer.parseInt(in.readLine(); System.out.println(myicqno); String addfriend="insert into friend values(?,?)" PreparedStatement prepare6=c6.prepareCall(addfriend); prepare6.clearParameters(

34、); prepare6.setInt(1,myicqno); prepare6.setInt(2,friendicqno); int r6=0; r6=prepare6.executeUpdate(); if(r6=1) System.out.println("ok addfrien"); else System.out.println("false addfriend"); String friendinfo="select nickname,icqno,ip,status,pic,email,info from icq where icqn

35、o=?" /如果成功,就向用戶傳遞好友的基本信息,比如呢稱等 PreparedStatement prepare5=c6.prepareCall(friendinfo); prepare5.clearParameters(); prepare5.setInt(1,friendicqno); ResultSet r5=prepare5.executeQuery(); boolean status; while(r5.next() System.out.println("dsf"); out.println(r5.getString("nickname&qu

36、ot;); out.println(r5.getInt("icqno"); out.println(r5.getString("ip"); status=r5.getBoolean("status"); if (status)out.println("1"); else out.println("0"); out.println(r5.getInt("pic"); out.println(r5.getString("email"); out.println

37、(r5.getString("info"); /while out.println("over"); r5.close(); c6.close(); catch (Exception e)e.printStackTrace();System.out.println("false"); System.out.println("over addnewfriend"); /end addfriend /結(jié)束處理其他用戶如果加我,我就加他 /delete friend /以下執(zhí)行用戶刪除好友 else if(str.equ

38、als("delfriend") System.out.println("del"); try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c7=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /連接數(shù)據(jù)庫(kù),根據(jù)接受的用戶號(hào)碼及好友號(hào)碼向好友表刪除記錄 int friendicqno=Integer.parseInt(in.readLin

39、e(); System.out.println(friendicqno); int myicqno=Integer.parseInt(in.readLine(); System.out.println(myicqno); String addfriend="delete from friend where icqno=? and friend=?" PreparedStatement prepare7=c7.prepareCall(addfriend); prepare7.clearParameters(); prepare7.setInt(1,myicqno); prep

40、are7.setInt(2,friendicqno); int r7=0; r7=prepare7.executeUpdate(); if(r7=1) System.out.println("ok delfrien");/成功 else System.out.println("false delfriend");/失敗 catch (Exception e)e.printStackTrace();System.out.println("del false"); /end delete friend /執(zhí)行用戶刪除好友結(jié)束 /以下處理用

41、戶退出程序 else if(str.equals("logout") try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c8=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /連接數(shù)據(jù)庫(kù),根據(jù)接受的用戶號(hào)碼,將其狀態(tài)字段設(shè)為0,及ip地址設(shè)為空 int myicqno=Integer.parseInt(in.readLine(); System.out.p

42、rintln(myicqno); String status="update icq set status=0 , ip=' ' where icqno=?" PreparedStatement prest8=c8.prepareCall(status); prest8.clearParameters(); prest8.setInt(1,myicqno); int r8=prest8.executeUpdate(); if(r8=1) System.out.println("ok logout"); else System.out.pr

43、intln("false logout"); catch (Exception e)e.printStackTrace();System.out.println("logout false"); /logout end /處理用戶退出程序結(jié)束 /get who add me as friend /以下處理那些人加了我為好友,以便上線通知他們 else if(str.equals("getwhoaddme") System.out.println("getwhoaddme"); try Class.forName(&

44、quot;sun.jdbc.odbc.JdbcOdbcDriver"); Connection c9=DriverManager.getConnection("jdbc:odbc:javaicq"," "," "); /連接數(shù)據(jù)庫(kù),根據(jù)我的號(hào)碼,從好友表中選擇誰(shuí)加了我 int myicqno=Integer.parseInt(in.readLine(); System.out.println(myicqno); String getwhoaddme="select icqno from friend where f

45、riend=?" PreparedStatement prepare6=c9.prepareCall(getwhoaddme); prepare6.clearParameters(); prepare6.setInt(1,myicqno); ResultSet r6=prepare6.executeQuery(); Vector who=new Vector(); while(r6.next() who.add(new Integer(r6.getInt(1); /end while /然后告訴這些好友的ip地址,然后發(fā)給用戶以便告訴其他客戶我上線了 for(int i=0;i<

46、;who.size();i+) String whoinfo="select ip from icq where icqno=? and status=1" PreparedStatement prepare=c9.prepareCall(whoinfo); prepare.clearParameters(); prepare.setObject(1,who.get(i); ResultSet r=prepare.executeQuery(); while(r.next() out.println(r.getString("ip"); /while r.

47、close(); /for out.println("over"); System.out.println("over"); c9.close();r6.close(); catch (Exception e)e.printStackTrace();System.out.println("false"); /end get who add me as friend /處理上線結(jié)束 System.out.println("Echo ing :"+str); System.out.println("Close

48、."); catch(IOException e)/捕或異常 finally trysocket.close(); catch(IOException e) public class Server/主服務(wù)器類 public static void main(String args)throws IOException ServerSocket s=new ServerSocket(8080);/在8080端口創(chuàng)建套接口 System.out.println("Server start."+s); try while(true)Socket socket=s.acc

49、ept();/無(wú)限監(jiān)聽(tīng)客戶的請(qǐng)求 System.out.println("Connectino accept:"+socket); trynew ServerThread(socket);/創(chuàng)建新線程 catch(IOException e)socket.close(); finallys.close();/捕或異常 /服務(wù)器程序結(jié)束2. 客戶程序如下(部分) 客戶通過(guò)Socket(InetAddress,port)建立與服務(wù)器的連接。服務(wù)器與客戶都通過(guò)構(gòu)造BufferedReader,PrintWriter來(lái)建立輸入輸出流,然后雙方通過(guò)該輸入輸出流來(lái)相互傳遞信息,一旦收到

50、客戶方的連接請(qǐng)求,服務(wù)器accept()方法返回一個(gè)新建的Socket對(duì)象??蛻舳巳缓笙蚍?wù)器發(fā)送消息,比如注冊(cè),登錄,查找好友等,服務(wù)器收到來(lái)自客戶的請(qǐng)求后,針對(duì)不同的消息處理請(qǐng)求, 雖然UDP不可靠但是對(duì)于icq可靠性并不太重要,而且UDP快速,所以客戶間發(fā)送信息通過(guò)UDP。用戶登錄時(shí)通過(guò)類DatagramPacket和DatagramSocket創(chuàng)建UDP包括其本地接受端口以及發(fā)送端口,默認(rèn)端口為5000和5001,通過(guò)取得的好友的IP地址來(lái)向好友發(fā)送消息(send(DatagramPacket)和接受消息(receive(DatagramPacket)。當(dāng)用戶通過(guò)UDP收到消息后,可以

51、通過(guò)DatagramPacket的方法InetAddress getAddress()得到對(duì)方的ip地址,通過(guò)對(duì)好友列表比較以判斷是誰(shuí)并提示用戶收到某某的消息,然后用戶選擇該用戶查看消息,如果好友列表沒(méi)有該人就顯示收到陌生人的消息。用戶可以按陌生人按鈕查看消息。1. 用戶注冊(cè)。當(dāng)服務(wù)器收到用戶的注冊(cè)請(qǐng)求,便開(kāi)始接受客戶傳第的信息,諸如客戶的呢稱啦,性別,籍貫,頭像,個(gè)人資料等,接受完畢后,便通過(guò)JdbcOdbc與后臺(tái)數(shù)據(jù)庫(kù)連接,然后向數(shù)據(jù)庫(kù)添加記錄,如果成功,便向客戶返回其Jicq號(hào)碼,并在數(shù)據(jù)庫(kù)中注冊(cè)用戶的IP地址,然后更新其Status為1即用戶在線??蛻羰盏椒?wù)器返回的信息后,便打開(kāi)主程

52、序窗口,并同時(shí)開(kāi)始創(chuàng)建UDP以便在用戶之間建立聯(lián)系。 *部分程序如下: void jButton1_mouseClicked(MouseEvent e) try Socket socket=new Socket(InetAddress.getByName(sername),serverport);/連接服務(wù)器 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream(); PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(),true); out.println("new");/告訴服務(wù)器我要注冊(cè) out.println(nickname.getText().trim();/告訴服務(wù)器我的呢稱,密碼,email,資料 out.println

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論