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

正文內(nèi)容

基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2025-06-24 23:50本頁面
  

【正文】 30try {int num 。// (true)。JProgressBar bar=()。()。(())。BufferedInputStream bos=new BufferedInputStream(new FileInputStream(f))。while((num = (b)) != 1){(b)。(m)。int value=LENGTH/10000。(()+value)。}(false)。// (0)。//發(fā)送完畢SimpleDateFormat s = new SimpleDateFormat(yyyyMMdd HH:mm:ss)。((new ()))。(4)。(m)。//在窗口上顯示發(fā)送成功(new Color(0,0,255), 文件+()+( +()/1000000+M)+發(fā)送成功+ \n)。} catch (FileNotFoundException e) {// TODO Autogenerated catch block()。} catch (IOException e) {// TODO Autogenerated catch block()。}}發(fā)送完成后,雙方的界面上都會(huì)顯示成功信息:31圖 59 文件傳輸成功圖客戶端接收文件的邏輯:文件的傳輸狀態(tài)被定義成了這幾種:0是不接受文件,1是接受文件,2請求發(fā)送文件,3文件傳輸中,4文件傳送完成客戶端接收文件是可根據(jù)這些狀態(tài),進(jìn)行操作,關(guān)鍵代碼如下://請求發(fā)送包if(()==2){ //對話框 是否接收 int i=(chat, 確定接收 + ()+( +()+KB), 接收文件,)。 Integer sender=()。 Integer getter=()。 (sender)。 (getter)。 //同意就發(fā)送同意接收數(shù)據(jù)包 if(i==){ //打開保存文件對話框 JFileChooser jfc=new JFileChooser(c:/)。 ()。 int mod=(chat)。32 if(mod==){ //如果選擇了路徑 File f=()。 f=new File(()+/+())。 bos=new BufferedOutputStream(new FileOutputStream(f))。 (1)。 send(m)。 }else{ //選擇了取消或關(guān)閉對話框 (0)。 send(m)。 } }else{ (0)。 send(m)。 }}else if(()==3){//正在傳輸包byte b[]=()。//設(shè)置進(jìn)度條().setVisible(true)。().setMaximum(()/10)。().setMinimum(0)。(b)。}else if (()==0){//不同意發(fā)送(chat, 對方拒絕接收文件, 通知, )。}else if (()==1){//同意發(fā)送(同意發(fā)送 )。()。}else if(()==4){(()+傳輸完成)。().setVisible(false)。(new Color(0,0,255), 文件+()+( +()/1000+M)+接收完成 +\n)。}}} 2)服務(wù)器端代碼:33服務(wù)端只負(fù)責(zé)轉(zhuǎn)發(fā),關(guān)鍵代碼如下:else if(()==()){Integer receiverAccount=()。ClientThread t=(receiverAccount)。(m)。} 用戶管理模塊 流程圖開始登陸用戶增刪改查 查看在線用戶 踢用戶下線結(jié)束圖 510 web 用戶登錄圖 關(guān)鍵代碼用戶管理的前臺(tái)頁面是 jsp 頁面, 在頁面中可以對用戶進(jìn)行增刪改查。34圖 511 用戶管理圖關(guān)鍵代碼如下:以頁數(shù)列出用戶public ListUser findByLimit(int begin,int num){ListUser list=new ArrayListUser()。conn=getConnection()。 try {ps=(FIND_BY_Limit)。(1, begin)。(2, num)。rs=()。while(()){User u=rowMapper(rs)。(u)。}PreparedStatement p=(select count(*) from user)。rs=()。while(()){rowCount=(1)。}} catch (SQLException e) {// TODO Autogenerated catch block()。}finally{close()。}return list。}刪除用戶:public void delete(Integer account){conn=getConnection()。35 try {ps=(DELETE)。(1, account)。()。(delete over)。} catch (SQLException e) {// TODO Autogenerated catch block()。}finally{close()。} }踢用戶下線的邏輯也很簡單,關(guān)閉 socket,將服務(wù)器端所對應(yīng)的線程停止,并且從線程集合中刪除改線程就可,關(guān)鍵代碼如下:(==========IOException==========)。()。//停止線程interrupt()。(getName()+下線)。//從線程集中刪去本線程((getName()))。//在線人數(shù)(在線人數(shù): +())。//發(fā)送數(shù)據(jù)包通知下線notifyOffline()。用戶被題下線后:圖 512 用戶下線圖 其他功能的實(shí)現(xiàn) 截圖功能的實(shí)現(xiàn)截圖類的核心是 JDK 中:Robot 類中 createScreenCapture(Rectangle screenRect) 創(chuàng)建36包含從屏幕中讀取的像素的圖像。先用new Robot().createScreenCapture(new Rectangle(().getScreenSize()))。截取全部屏幕的圖片,然后顯示出來,覆蓋住整個(gè)屏幕。然后監(jiān)聽鼠標(biāo)事件,再用createScreenCapture(Rectangle screenRect)方法截圖 .主要代碼如下:public void mouseDragged(MouseEvent e) {int w=width。int h=height。// (x+ +y+ +width+ +height+ )。width=()x。height=()y。w=(wwidth?w:width)。h=(hheight?h:height)。//重繪的邊界要比真實(shí)的稍微大點(diǎn)//只repaint一定區(qū)域,防止屏幕閃爍repaint(x,y,w+2,h+2)。}如果點(diǎn)擊了鼠標(biāo)右鍵則取消截圖,雙擊確定截圖完成public void mouseClicked(MouseEvent e) {//如果是鼠標(biāo)右鍵的話if(()==){dispose()。}if(()==2){success()。dispose()。}} 聊天記錄功能的實(shí)現(xiàn)如果是圖片則顯示出,發(fā)送時(shí)間和圖片大小。如果是文件則顯示出請求發(fā)送時(shí)間,同意接收時(shí)間,接收完成時(shí)間,和文件大小。主要代碼如下:37public static void afterSend(Object o) {Message msg=(Message) o。try {File f = new File(c:/+().toString()+.txt)。if (!()) {()。}BufferedWriter bw=new BufferedWriter(new FileWriter(f,true))。if(().intValue()==){(()+ 發(fā)送消息給 +()+:+\n)。(()+\n)。(\n)。}else if(().intValue()==){(()+ 發(fā)送圖片給 +()+:+\n)。(圖片大小 :+().length +byte+\n)。(\n)。}else if(().intValue()==){if(()==2){(()+ 請求發(fā)送文件給 +()+:+\n)。(文件名 :+()+ 文件大小: +()+KB+\n)。}if(()==0){(()+ 拒絕接受文件 :+()+\n)。}if(()==1){(()+ 你同意接受文件 :+()+\n)。}if(()==4){(()+ 發(fā)送給 +()+的文件 :+()+發(fā)送完成 +\n)。(\n)。}}()。()。38} catch (IOException e) {// TODO Autogenerated catch block()。}} 服務(wù)端線程的實(shí)現(xiàn)在服務(wù)器上,截圖信息和文件信息都是進(jìn)行簡單的轉(zhuǎn)發(fā):if(()==()){Integer receiverAccount=()。ClientThread t=(receiverAccount)。(m)。}轉(zhuǎn)發(fā)文字信息時(shí)會(huì)判斷用戶是否在線:if (() == ()) {(() + send to+ () + at + ())。Integer receiverAccount = ()。ClientThread t = (receiverAccount)。if (t == null) {//不在線就暫時(shí)存儲(chǔ)在服務(wù)器上(receiverAccount, m)。} else(m)。} 用戶界面的設(shè)計(jì) 登陸界面登陸界面的實(shí)現(xiàn)比較簡單,是 Jlabel ,JtextFeild,Jpanel等控件的集合39圖 513 用戶登錄界面 好友列表好友列表采用了絕對布局,用到了 CardLayout 和 JscrollPane:圖 514 好友列表界面40好友列表展開后:圖 515 好友列表展開界面 聊天界面雙擊好友頭像后,就會(huì)顯示出聊天界面:41圖 516 聊天界面42結(jié)語本系統(tǒng)采用 C/S 和 B/S 模式,聊天室頁面簡潔,操作便捷,穩(wěn)定可靠,性能優(yōu)良。本系統(tǒng)可以實(shí)現(xiàn)通訊系統(tǒng)最基本的兩個(gè)功能:一是雙方能夠互相收發(fā)信息,二是雙方能夠互傳文件。后臺(tái)還可以對用戶進(jìn)行管理。這次課程設(shè)計(jì)用到了,Swing, Socket,JSP,Struts2 ,AJAX ,JDBC,Thread,JavaScript 等各種技術(shù),采用 MySQL 作為數(shù)據(jù)庫,MyEclipse 作為開發(fā)工具?;旧习舜髮W(xué)所學(xué)習(xí) J2EE 和 J2SE 的所有知識(shí)。在課程設(shè)計(jì)的過程中,加強(qiáng)了對多線程的理解和掌控。通過這次的課程設(shè)計(jì),我充分體會(huì)到學(xué)習(xí)理論知識(shí)的重要性,但更加體會(huì)到動(dòng)手實(shí)踐的必要性。只有通過親身的動(dòng)手實(shí)踐,才能發(fā)現(xiàn)并解決問題,才能真正領(lǐng)悟某一技術(shù)的精髓。我相信自己會(huì)在將來的軟件設(shè)計(jì)、開發(fā)過程中更進(jìn)一步地學(xué)習(xí),不斷提升自己的專業(yè)能力
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1