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

正文內(nèi)容

本科畢業(yè)論文-基于java的多人網(wǎng)絡(luò)聊天室設(shè)計(jì)(完整版)

2025-02-23 15:53上一頁面

下一頁面
  

【正文】 })。 } })。 (null)。 (new Dimension(207, 441))。 } public void init(LinkInfo linkInfo){ = ()。 private JButton jButtonFind = null。 (())。amp。amp。 (new Rectangle(289, 266, 88, 28))。 } return jTextFieldRegRepassword。 } /** * This method initializes jTextFieldRegUserName * * return */ private JTextField getJTextFieldRegUserName() { if (jTextFieldRegUserName == null) { jTextFieldRegUserName = new JTextField()。 (jLabelRegPassword, null)。 ( 密 碼:)。 } return jFrame。 (null)。 private InputStream in。 private JLabel jLabelRegUserName = null。 (new Rectangle(295, 214, 82, 28))。 } //登陸過程中,使登陸界面上的登陸按鈕不可用 (false)。!().equals()amp。 (new Rectangle(143, 162, 120, 41))。 } } })。 (getJTextFieldLoginUserName(), null)。 jLabelLoginUserName = new JLabel()。 (getJContentPane())。 public Login(LinkInfo linkInfo){ = linkInfo。 private JTextField jTextFieldLoginUserName = null。用戶之間的信息傳輸也是通過服務(wù)器端的中轉(zhuǎn)處理,然后通過線程和I/O流傳輸給另一個(gè)用戶,服務(wù)器端還有一個(gè)作用就是存儲(chǔ)和中轉(zhuǎn)用戶的信息和資料,通過線程獲取客戶端信息,然后從Soket那里得到用戶要傳遞和存儲(chǔ)的信息,使用I/O流進(jìn)行處理分析,最后存儲(chǔ)到文件中或傳遞給用戶。其次在客戶端會(huì)通過圖形界面編程的API獲取用戶在登陸界面輸入的用戶名和用戶密碼,通過數(shù)據(jù)流傳輸?shù)椒?wù)器,將Client傳送過來的用戶帳號(hào)和用戶密碼和Server端的文件所存儲(chǔ)的用戶名和密碼相對(duì)照,如果用戶昵稱和用戶密碼都輸入正確,提示登陸成功,將用戶轉(zhuǎn)到聊天窗口界面。通過java的多線程技術(shù)我們實(shí)現(xiàn)了用戶的群聊和私聊功能,從而滿足了用戶的兩種不同需求。 java圖形界面編程技術(shù)(Abstract該類名為RandomAccessFile。用用功能復(fù)雜。該模型的目的是使各種硬件在相同的層次上相互通信。通常,操作系統(tǒng)上運(yùn)行的每一個(gè)應(yīng)用程 序都運(yùn)行在一個(gè)進(jìn)程中,例如:,IE等等。可以幫助大眾解決信息傳輸和溝通中的數(shù)據(jù)和信息無法及時(shí)接受和傳輸?shù)膯栴},它的即時(shí)性,廣域性和無局限性為企業(yè)和大眾之間的感情凝聚,與外界的溝通交流也因此變得更加高效和方便,它改變了我們的生活方式。 data stream。 chat rooms。這也讓網(wǎng)絡(luò)通信工具受到了廣大的公司、企業(yè)及院校的追捧,大多的企業(yè)和院校都有相應(yīng)的網(wǎng)絡(luò)通信軟件工具或者對(duì)應(yīng)的自己開發(fā)的網(wǎng)絡(luò)通信工具,方便于進(jìn)行企業(yè)和院校日常的信息和事務(wù)處理。一個(gè)程序同時(shí)運(yùn)行多個(gè)任務(wù),那么每個(gè)任務(wù)就稱作為一個(gè)線程。TCP/IP字面上代表了兩個(gè)協(xié)議:TCP傳輸控制協(xié)議和IP互聯(lián)網(wǎng)協(xié)議。 java Soket技術(shù)Socket“套接字”。在多人聊天室中我們使用Soket套接字發(fā)送或則應(yīng)答網(wǎng)絡(luò)請(qǐng)求,同時(shí)綁定和監(jiān)聽7788網(wǎng)絡(luò)端口。FileInputStream:通過打開一個(gè)到實(shí)際文件的連接來創(chuàng)建一個(gè)FileInputStream,該文件通過系統(tǒng)中的File對(duì)象指定,即向文件中輸入數(shù)據(jù)。本系統(tǒng)主要分為兩大部分:TCP/IP Server和客戶端client以下就是客戶端Client和Server服務(wù)器端的程序運(yùn)行模塊圖:客戶端的主要功能還是提供用戶之間的聊天服務(wù)和文件傳輸服務(wù),但是我們會(huì)通過注冊(cè)頁面和登錄頁面先進(jìn)行用戶驗(yàn)證,然后在用戶列表界面我們找到好友進(jìn)行通訊,我們可以選擇私聊和群聊,也可以向另一個(gè)用戶傳輸文件和資料,下面進(jìn)行詳細(xì)分析。傳輸文件的話我們主要是運(yùn)用到I/O流這個(gè)技術(shù)的,通過字符流和字符緩沖流我們將文件逐行讀取解析復(fù)制,然后通過字節(jié)流和字節(jié)輸出流將所讀取到的字符解析成字節(jié),輸入到同一名稱的文件中給用戶。 private JPanel jContentPane = null。 private InputStream in。 (new Dimension(389, 274))。 (new Rectangle(18, 107, 335, 38))。 (null)。 } /** * This method initializes jTextFieldLoginUserName * * return */ private JTextField getJTextFieldLoginUserName() { if (jTextFieldLoginUserName == null) { jTextFieldLoginUserName = new JTextField()。 } } })。 } //登陸方法 private void doLogin(){ try{ //連接服務(wù)器端 ()。 } if(out==null){ out = ().getOutputStream()。 }else{ ().showAlert(用戶名或密碼為空)。 } return jButtonReg。 private JPasswordField jTextFieldRegRepassword = null。 (this)。 (getJContentPane())。 jLabelRegPassword = new JLabel()。 jContentPane = new JPanel()。 (getJButtonReg(), null)。 } return jTextFieldRegPassword。 } })。 } return jButtonLogin。!().equals()amp。 new Thread(gif).start()。 } } }catch(Exception e){ ()。//所有好友對(duì)應(yīng)樹節(jié)點(diǎn) private LinkInfo linkInfo。 } /** * This method initializes jFrame * * return */ public void closeFrame(){ ()。 } })。 (new Rectangle(1, 384, 199, 29))。 } /** * This method initializes jTree * * return */ private JTree getJTree(DefaultMutableTreeNode nodes) { //if (jTree == null) { jTree = new JTree(nodes)。 } String userInfo = (node)。 } public String getUserInfoByTreeNode(DefaultMutableTreeNode node){ if(allTreeNodes!=nullamp。amp。 (friend)。 private JScrollPane jScrollPane = null。 /** * This method initializes jScrollPane * * return */ private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane()。 } } ()。 = target。 (new Dimension(361, 349))。 i ().size()。 (null)。 (new Rectangle(5, 203, 333, 35))。 } })。 ().setValue( ().getMaximum())。 } } // 如果當(dāng)前聊天對(duì)象不在線,則告知用戶,此好友已下線 if (!friendOnline) { (() + + 已下線..信息發(fā)送失敗\n)。 ()。 if (v == ) { // 同意接收 JFileChooser fd = new JFileChooser()。 } else { // 不同意接收 (, out)。 } if (t instanceof Container) { textField = getTextField((Container) t)。 //總共讀取的字節(jié)量 long sum=0。 loaded = (int)(sum+1024len?1024:lensum)。\n)。 int len = 1。 } } }.start()。 if (f != null) { readyforsendfile = f。 ServerSocket ss = new ServerSocket(7788)。 //當(dāng)前客戶端的輸入流 private InputStream in。 doLogin()。 //文本私聊 case : (message:私聊消息)。 sendFileToOne1()。 } catch (Excep。 //請(qǐng)求開始傳送文件 case : (message:開始向私人傳送文件)。 break。 //注冊(cè)操作 case : (message:注冊(cè)操作)。 //當(dāng)前客戶端對(duì)應(yīng)的用戶信息 private UserInfo userinfo。 while(true){ DoServiceForClient dsfc = new DoServiceForClient(())。 (target, out)。\n)。 } ()。 (false)。 } } ()。 (() + 正在接收文件。 } } } return textField。 (NO, out)。 (fileName)。 } return false。 return false。 return true。 } public boolean sendMessageToServer() { // 如果已經(jīng)沒有好友在線,則告知用戶,此好友已下線 if (().size() == 0) { (已無用戶在線...\n)。 } } })。 (getJTextField(), null)。 break。 (getJContentPane())。 if ((ALL)) { (群聊中...)。 } /** * This method initializes jTextArea * * return */ private JTextArea getJTextArea() { if (jTextArea == null) { jTextArea = new JTextArea()。 (getJTextArea())。 private LinkInfo linkInfo。 }} 聊天窗口和文件傳輸界面 服務(wù)器端和客戶端通過I/O流,在建立用戶建立會(huì)話之前,會(huì)先建立一個(gè)socket連接,用來接收請(qǐng)求和發(fā)送請(qǐng)求消息,用戶之間的數(shù)據(jù)傳輸是通過Socket連接服務(wù)器端然后轉(zhuǎn)給另一個(gè)服務(wù)器端的,其中我們通過流來翻譯字節(jié)和復(fù)制字符然后傳輸給用戶,和傳輸文件的原理是差不多的。 for(int
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1