?? retail.txt
字號:
//PK 2004/10/14
消息頭格式:
應用標記 + 版本號 + 時間 + 命名ID
//PK 2004/10/14
[登錄消息] 用戶名
[在線消息] 用戶名
[登出消息]
[說話] 內容
[悄悄話] 內容
[更名消息] 用戶名
[命名沖突消息]
[發文件消息] 標記 + 任務ID + 文件名
[收文件消息] 任務ID + TCP偵聽端口
[任務取消消息] 任務ID
[拒收文件消息] 任務ID
//PK 2004/10/14
(A) 關于登錄的處理
(發)
1 登錄后廣播一個[登錄消息]。
(收)
1 收到一個[登錄消息]后,判斷用戶是否已經在線。
1.1 如果已經在線,判斷是否改名,是則改之(參見D),并更新用戶最后在線時間。
1.2 如果不在線,判斷該用戶是否在用戶列表中。
1.2.1 在,則改變用戶狀態為在線,并判斷是否改名,是則改之(參見D),并更新用戶最后在線時間。然后回復一個[在線消息]。
1.2.2 不在,則將該用戶添加到用戶列表。并保存用戶列表到磁盤。
//PK 2004/10/14
(B) 關于是否在線的處理
(發)
1 每隔固定的時間發送一個[在線消息]給好友列表中的所有用戶,包括不在線的。
(收)
1 收到一個[在線消息]后,判斷是否來自名字沖突的地址,是則放棄什么也不做。
2 判斷該用戶是否在線。
2.1 否,則將該用戶的狀態改為在線,并更新用戶最后在線時間。
2.2 是,則更新用戶最后在線時間。并判斷是否要改名,要則改之(參見D)。
(其它)
1 每隔固定時間判斷用戶最后在線時間是否已經超過限期
1.1 是則改變用戶狀態為離線
1.2 否則不做
//PK 2004/10/14
(C) 登出的處理
(發)
1 廣播一個[登出消息]。
2 取出好友列表,對每一個好友發送一個[登出消息],包括不在線的。
(收)
1 收到一個[登出消息]后,判斷用戶是否在線。
1.1 在線,則將用戶狀態設為離線,并打印一條系統通知,更新用戶最后在線時間。
1.2 離線,什么也不做。
//PK 2004/10/14
(D) 改名及名字沖突
(發)
1 改名時先檢查是否于現有在線用戶重名
1.1 重名不允許更改,要求再重命名。
1.2 不重名,發送一個[更名消息]給好友列表中的每一個人,包括不在線的。
1.2.1 將命名沖突地址變量清0。
(收)
1 收到[更名消息]后,或是[登錄消息]和[在線消息]需要改名時,判斷名字是否和自己重名。
1.1 否,更改用戶名,并打印一條系統通知,更新用戶最后在線時間。
1.1.1 命名沖突地址不為0,并等于用戶的地址,則將命名沖突地址清0。
1.2 是,回復一條[命名沖突消息]。并記下該用戶的地址為命名沖突地址。
2 收到[命名沖突消息],記下該用戶的地址為命名沖突地址,并彈出要求改名框。
//PK 2004/10/14 - 10/20
(E) 文件傳送
(發-源方)
1 對選中的好友發送一個[發文件消息],如果沒有選中則為所有用戶。(消息中帶一個隨機數做為文件發送任務ID)。
2 在系統中生成一個發送文件任務,以ID為關聯。
(收發-目方)
1 確認要接收,詢問目標路徑。并生成一個接收文件任務。
1.1 回復一個[收文件消息],帶上相應的任務ID號。
1.2 起一個接收線程,并建立TCP連接到源方。
1.3 連接成功后,在TCP連接上發送相應的任務ID。
1.4 開始接收文件。
1.5 接收完成后,關閉TCP連接。打印一條系統通知。
1.6 刪除接收文件任務,關閉接收線程
2 不接收。
2.1 回復一個[拒收文件消息],帶上相應的任務ID號。
(收-目方)
1 收到[拒收文件消息]。
1.1 如果有相應的任務,打印一條系統通知,從相應的任務中刪除該用戶。如果任務中已經沒有待接收用戶則刪除該任務。
1.2 如果沒有相應的任務,什么也不做。
2 收到[收文件消息]。
2.1 如果有相應的任務,打印一條系統通知。
3 文件發送線程偵聽到TCP連接
3.1 建立一個收文件線程及TCP連接
3.2 在新建的TCP連接上收task_id。
3.3 如果有相應的task,發送文件。
3.3.1 發送完成后,更新相應的任務。關閉線程及TCP連接。
3.4 如果沒有相應的task,關閉發送線程及TCP連接。發送一條[任務取消消息]
(其他)
1 系統在啟動時,即開始一個文件發送的TCP聯系傾聽線程。
2 定時檢測系統中的任務,如果任務過時則刪除。
(注)
1 [發文件消息]中需要帶上一個指示位,指示是系統發送,還是用戶發送。如果是系統發送則直接接收文件,不詢問用戶也不打印任何系統消息。目前主要用于用戶頭像的傳輸及用戶貼圖。
[][][][][][][][][][][][]
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -