freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

局域網(wǎng)聊天系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文(參考版)

2025-06-28 02:56本頁面
  

【正文】 通過畢業(yè)設(shè)計,發(fā)現(xiàn)自己在理論研究和實際工作能力等方面都得到了提高,受益匪淺,同時在老師的指導(dǎo)和課題組同學(xué)的共同幫助下,及時總結(jié)研究成果,這些無疑會對我今后的工作和學(xué)習(xí)帶來很大的幫助。致謝一個月的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個還沒畢業(yè)的本科生的畢業(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。根據(jù)實現(xiàn)的情況看,具有較友好的聊天界面生成效果,以及流暢的網(wǎng)絡(luò)通信效果。所以,我決定認(rèn)真總結(jié)這次畢業(yè)設(shè)計的經(jīng)驗,以及學(xué)習(xí)到的知識,來更加的充實自己的頭腦和完善自己的知識結(jié)構(gòu)。在當(dāng)今電腦網(wǎng)絡(luò)密布的世界當(dāng)中,一個簡單高效的局域網(wǎng)通信工具是如此的具有實用性,所以我們應(yīng)當(dāng)重視對它的相關(guān)研究與開發(fā)。數(shù)據(jù)報文包還包含了發(fā)送者的IP地址和端口號等信息。系統(tǒng)可調(diào)用DategramPacket對象的receive()函數(shù)來接受數(shù)據(jù)報,并將DategramPacket對象作為該函數(shù)的參數(shù)。為了接受從服務(wù)器返回的結(jié)果數(shù)據(jù)報文包而創(chuàng)建一個新的DategramPacket對象。 Publilc InetAddress getAddress():返回一個發(fā)送或接受此數(shù)據(jù)報報文的機(jī)器的IP地址。(3).接受消息Dategrampacket類提供了四個函數(shù)來獲取消息: Public byte[] getDate():返回一個字節(jié)數(shù),包含收到或要發(fā)送的數(shù)據(jù)報中的數(shù)據(jù)。通過void sendmessage_mousePressed(MouseEvent e)來創(chuàng)建鼠標(biāo)監(jiān)聽事件。} ()。} } catch(IOException e2){(())。} else{ sendPacket=new DatagramPacket(data,(),(theip),sendPort)。 ()。 byte[] data=()。實現(xiàn)代碼如下:void send_mouseClicked(MouseEvent e) {//發(fā)送消息try{ String s=().trim()。在發(fā)送的過程中利用構(gòu)造函數(shù)DategramPacket(byte bufferedarray[],int length,InetAddressaddress,int port)構(gòu)造一個包長度為length的包,它是一個將數(shù)據(jù)傳送到指定主機(jī)指定端口號上的數(shù)據(jù)文包。消息發(fā)送之前首先創(chuàng)建一個數(shù)據(jù)報文包,用來實現(xiàn)無連接的包傳送服務(wù),每個數(shù)據(jù)報文包是用DategramPacket類來創(chuàng)建的,DategramPacket對象封裝數(shù)據(jù)報包數(shù)據(jù)、包長度、目標(biāo)地址和目標(biāo)端口。(false udp!)。 // (udp +udpPORT+ ok)。 receiveSocket=new DatagramSocket(udpPORT)。 代碼如下所示:public void CreatUDP(){try{ sendSocket=new DatagramSocket()。 } catch(Exception e) { ()。 thread=new Thread(this)。 findf=new FindFriend2(myjicq,server,serverport)。 ConnectServer(myjicq)。 serverport=serport。 try { myjicq=s。 }catch(IOException e1){} }}(6)主程序的實現(xiàn)主程序是利用MainWin類來實現(xiàn)的,雖然主程序類并不被直接執(zhí)行但是由于所有的事件處理都在這個類中實現(xiàn)所以主程序類包含大量的成員變量,可分為三大塊,第一是保存好友基本信息所有變量的定義,第二是用于臨時變量保存臨時好友也是用戶的基本信息和一些數(shù)組的指數(shù),第三是網(wǎng)絡(luò)相關(guān)變量,再加上程序界面變量就是在此系統(tǒng)中用到的所有變量。 //}while(!(ok))。 (true)。 ()。//從服務(wù)器讀取信息 //如果出錯 if((false)) (this,對不起,出錯了:(,ok,)。 String str= 。no=(())。(())。(().trim())。//發(fā)送新建用戶請求(().trim())。 PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(())),true)。 Socket socket=new Socket((sername),serverport)。public class Register extends JDialog { 新建用戶的界面開發(fā) …… ……}點擊用戶注冊時代碼的實現(xiàn) void jButton1_mouseClicked(MouseEvent e) { try{ (sername)。import .*。import .*。 }}(5)注冊類的實現(xiàn)注冊類的主要代碼:import .*。 } void quit_mouseClicked(MouseEvent e) {//關(guān)閉按扭()。(400,400)。//打開新建窗口()。 }catch(IOException e1){} } void newuser_mouseClicked(MouseEvent e) {//新建用戶按紐 ()。 } //(\n)。 MainWin f2=new MainWin(g,server,serport)。 else{//如果成功就打開主程序 ()。 //do{ str=().trim()。(())。(login)。//連接服務(wù)器 BufferedReader in=new BufferedReader(new InputStreamReader(()))。//輸入輸出流private PrintWriter out。//端口 private Socket socket。//***************** String server。import .*。import .*。客戶端的主要代碼: import .*。}//捕或異常 }} (4)客戶端的實現(xiàn) Java可以不首任何操作系統(tǒng)的約束所以它是跨平臺的,它可以輕松用其提供的API函數(shù)中的Swing包和AWT包開發(fā)出Apllet界面 其中本系統(tǒng)客戶端中的界面開發(fā)就是用的java提供的API函數(shù)中的Swing包開發(fā)的。//創(chuàng)建新線程 }catch(IOException e){()。//無限監(jiān)聽客戶的請求 (Connectino accept:+socket)。//在8080端口創(chuàng)建套接口(Server start..+s)??赏ㄟ^Vector friendno=new Vector()。來執(zhí)行將用戶的資料添加到數(shù)據(jù)庫中,最后告訴客戶其注冊的號碼。(3)服務(wù)器端的實現(xiàn) 服務(wù)器端首先啟動線程監(jiān)聽函數(shù),然后定義一個字符串類用于取得客戶端發(fā)給服務(wù)器端的字符串,如果取得輸入字符串為”login”則表示用戶申請登陸,如果用戶沒有登陸而是點擊取消則直接關(guān)閉連接,如果是登陸,()語句連接數(shù)據(jù)庫,然后等待用戶的輸入,當(dāng)接收到來自客戶端輸入的號碼和密碼后,通過Java套接SQL語句來查詢數(shù)據(jù)中的號碼和密碼比較是否和客戶端發(fā)送過來的相同,如果相同就告訴客戶OK可以登陸,同時更新數(shù)據(jù)庫次用戶為在線以及注冊用戶的IP地址否則告訴客戶登陸失敗 。服務(wù)器端接受到客戶端發(fā)送過來的號碼和密碼信息之后通過和數(shù)據(jù)庫中的用戶名和密碼相比較來確定用戶的登陸是否成功并對客戶端做出相應(yīng)的回應(yīng)。 String sql=select nickname,password from icq where icqno=?。//如果是結(jié)束就關(guān)閉連接 else if((login)) {//如果是登錄 try{ ()。 主要代碼如下所示:public void run(){//線程監(jiān)聽函數(shù)try{ while(true){ String str=()。 //準(zhǔn)備從數(shù)據(jù)庫選擇呢稱和密碼 PreparedStatement prepare=(sql)。//連接數(shù)據(jù)庫Connectionc=(jdbc:odbc:javaicq,sa,321)。//取得輸入字符串 if((end))break。//創(chuàng)建輸出流 start()。//取得傳遞參數(shù) in = new BufferedReader(new InputStreamReader(()))。 解決方案 (1)多線程的實現(xiàn)服務(wù)器端的多線程是通過Java提供的API函數(shù)中的ServerThread類來實現(xiàn)的,用run()方法來監(jiān)聽線程,當(dāng)監(jiān)聽到有客戶端申請連接時用start()方法來啟動一個新線程用來和這個客戶端建立連接,同時當(dāng)有新的客戶端申請連接時服務(wù)器端會再用start()方法啟動一個新的線程再與這個新的客戶端進(jìn)行連接,這樣就可以實現(xiàn)了服務(wù)器端的多線程。 4. 服務(wù)器運行在自定義的端口上1001. 5. 服務(wù)器監(jiān)控用戶列表和用戶聊天信息(除私聊外)。 2. 能夠允許注冊過的用戶登錄聊天界面并可以聊天。當(dāng)多個用戶同時在線時可以對某個人私聊,而第三個人的聊天界面會被屏蔽掉。次數(shù)據(jù)庫中的兩個表示通過主子段icqno相關(guān)聯(lián)的。Windowclose ,負(fù)責(zé)監(jiān)聽聊天室界面的操作,當(dāng)用戶退出時返回給服務(wù)器信息。 為客戶端程序注冊界面,負(fù)責(zé)用戶帳號信息的注冊驗證與反饋。 客戶端結(jié)構(gòu) 客戶端結(jié)構(gòu)圖 為客戶端程序啟動類,負(fù)責(zé)客戶端的啟動和退出。也是Socket編程的重要部
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1