基於BIO模式下的及時通訊(四)

2021-10-18 16:20:40 字數 3181 閱讀 3728

目標

實現步驟

gui介面讀者可以自行複製使用。

登陸輸入服務端ip和使用者名稱後,要請求與服務端的登陸,然後立即為當前客戶端分配乙個讀執行緒處理客戶端的讀資料訊息。因為客戶端可能隨時會接收到服務端那邊**過來的各種即時訊息資訊。

客戶端登陸完成,服務端收到登陸的使用者名稱後,會立即發來最新的使用者列表給客戶端更新。

**實現

客戶端主體**

public

class

clientchat

implements

actionlistener

private

void

initview()

private

void

displaychatview()

private

void

displayloginview()

private

static

void

setwindowcenter

(jframe frame,

int width ,

int height,

boolean flag)

@override

public

void

actionperformed

(actionevent e)

\.\d\.\d\.\d\

if(ip==null ||

!ip.

matches

("\\d\\.\\d\\.\\d\\.\\d"))

else

if(name==null ||

!name.

matches

("\\s"))

if(!msg.

equals(""

))else

catch

(exception e1)

}break

;case

"取消"

:/** 退出系統 */

system.

exit(0

);break

;case

"傳送"

:break;}

}}

客戶端socket處理執行緒:

public

class

clientreader

extends

thread

@override

public

void

run(

)else

if(flag ==2)

}}catch

(exception e)

}}

小結

客戶端傳送訊息邏輯

客戶端傳送群聊訊息,@訊息,以及私聊訊息。

實現步驟

**實現

客戶端主體**:

public

class

clientchat

implements

actionlistener

private

void

initview()

private

void

displaychatview()

private

void

displayloginview()

private

static

void

setwindowcenter

(jframe frame,

int width ,

int height,

boolean flag)

@override

public

void

actionperformed

(actionevent e)

\.\d\.\d\.\d\

if(ip==null ||

!ip.

matches

("\\d\\.\\d\\.\\d\\.\\d"))

else

if(name==null ||

!name.

matches

("\\s"))

if(!msg.

equals(""

))else

catch

(exception e1)

}break

;case

"取消"

:/** 退出系統 */

system.

exit(0

);break

;case

"傳送"

:// 得到傳送訊息的內容

string msgsend = smssend.

gettext()

.tostring()

;if(!msgsend.

trim()

.equals(""

))} dataoutputstream dos =

newdataoutputstream

(socket.

getoutputstream()

);dos.

writeint

(flag)

;// **訊息 傳送給所有人

dos.

writeutf

(msgsend);if

(flag ==3)

dos.

flush()

;}catch

(exception e1)

} smssend.

settext

(null)

;break;}

}}

客戶端socket處理執行緒:

class

clientreader

extends

thread

@override

public

void

run(

)else

if(flag ==2)

}}catch

(exception e)

}}

小結

基於介面卡模式下的裝飾者模式

有些類被final修飾的類,想繼承進行方法的擴充,但卻不能被繼承。有些類想使用它的方法,但是卻又不想繼承,這兩種情況就是裝飾者的應用場景 本質就是將該類,成員變數的方式實現呼叫方法,並進行補充 實現 inte ce factory 基礎類實現該介面,返回 商品 的字串 final class bas...

UNIX系統下的基於TCP協議的網路通訊程式

include include include include include include ypedef struct netmessage netms typedef class netclass netc void netc netinits int port else netms.succ...

基於Java語言的C S模式通訊錄備份和查詢軟體

一 需求分析 本設計要求完成乙個基於c s模式的通訊錄備份軟體,採用c s架構,具有易用 美觀的圖形介面。1.1 伺服器端功能要求 能夠驗證客戶身份,接收客戶端的備份通訊錄的請求,能夠實時備份和更新客戶的通訊錄 加密儲存每個使用者的通訊錄 1.2 客戶端功能要求 能登陸連線到伺服器,回應 連線成功 ...