當前位置:首頁 » 編程軟體 » 阿哈希編程

阿哈希編程

發布時間: 2023-01-14 06:44:41

1. 有過java socket網路編程經驗的人進來指導下

這兩個問題都可以通過消息機制來解決,
消息機制就是雙方約定的通信語言。

首先:你需要自定義一份雙方約定的通信機制,
其次: 對每個連進來的客戶按用戶ID或IP進行編號存入哈希表,以方便索引用戶的Socket通道。 每進來一個客戶就 hashtable.put(user.name, socket);

最後:雙方都還要有兩個緩沖數組(可以是數組Object[],也可以是Vector,Arraylist,Hashtable都可以);

一個叫發送緩沖區,一個叫接收緩沖區。每一個都附帶一個管理線程。
向客戶端發送消息時,並不是馬上就發送,而是將消息推入到發送緩沖區排隊,
發送緩沖區的線程會每隔一小片時間後就掃描並 pop出一個可發送的消息。
分析這個消息的源發送者和目的發送者,然後hashtable的索引找到目的發送者的socket通道。並發送.

另一個叫接收緩沖區。 Socket的網路線程不斷接收到客戶的消息,但不是馬上就處理,也不會自己親自處理,而是壓入接收緩沖隊列等待緩沖隊列來處理,自己休息片段又立馬再去接收別的客戶發過來的消息。 接收緩沖區有自己的線程,它每sleep一小片刻時間後就掃描隊列中有無消息到達,如果有(網路線程剛壓進一的),則可以採用監聽器模式讓監聽器處理,如果不想那麼復雜也可以自己處理, 會分析消息來源和去向,從去向中分析出將要發送給某人,但自己並不發送,而是直接壓入到發送緩沖區(這里就接到前面的發送緩沖區介紹中去了)

最後是消息機制的設計。
我公司的游戲都是由我來設計通信機制,實現三網合一,即手機,PC,電視機頂盒三種客戶端同玩一桌麻將游戲
一般java設計的游戲中設計如下:
一. 消息頭 二.消息體

消息頭設計格式如下: 1. 本消息包長度,以方便解析位元組;2. 本消息類型TYPE:如一般消息,游戲消息,大廳消息,聊天消息;3.本消息命令類型COMMAND: 如登陸、個人資料修改、登出、聊天。。。。

消息體設計格式一般根據Type和command不同而有不同。 如聊天消息包含四個欄位,String 聊天內容、 User 發送者、 User 接收者、Text文字排版信息

服務端SeverSocket收到這個消息後,壓入接收緩沖區, 接收緩沖線程分析其中結構,根據Type和Command的類型實例化出相應消息類, 該消息類能自動將後面的位元組流實例化自身的欄位。從而得到接收方和發送方, 得到接收方後再將消息封裝好壓入到發送隊列

這個結構除完全適合聊天系統以外,以後要加入新內容將會非常容易!

如果有什麼疑問歡迎call我, 我不負責寫代碼,但可以指點你。 另外,我的回答記錄中有用nio設計的聊天室BBS代碼。也是幫一個學生做的。你可以看看

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:645
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:936
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:632
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:821
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:731
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1066
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:299
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:160
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:852
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:763