黑馬程式設計師 關於Socket程式設計 網路聊天的總結

2021-06-07 07:13:06 字數 2060 閱讀 3428

----------------------

windows phone 7手機開發、

.net培訓、期待與您交流! ----------------------

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.windows.forms;

using system.net;

using system.net.sockets;

using system.threading;

namespace 網路聊天

//將用於 監聽有沒有客戶端連線請求的套接字 設定為全域性變數,那麼在watchclientconnection方法裡也可以直接訪問

socket socketwatch = null;

//存放每乙個 客戶端的 套接字的字典集

dictionarydictsocket = new dictionary();

//存放和 每乙個 客戶端 通訊的 單獨的執行緒 的字典集

dictionarydictthread = new dictionary();

/// /// 建立迴圈監聽有沒有客戶端連線的套接字, 開啟監聽

///

///

///

private void btnstartserver_click(object sender, eventargs e)

#region watchclientconnection() 用於 迴圈監聽 有沒有客戶端連線伺服器 的方法

/// /// 用於 迴圈監聽 有沒有客戶端連線伺服器 的方法

///

void watchclientconnection()

} #endregion

/// /// 乙個用來迴圈監聽 每乙個客戶端的 訊息的方法

///

///

void receivemsg(object connectionsocket)

}/// /// 將訊息顯示在 訊息去的方法

///

///

///

void showmsg(string clientendpoint, string msg)

}}

a. 服務端的建立(主要流程)

1.建立乙個監聽的套接字  socket

2.設定繫結監聽的 ip 和 埠號

3.設定監聽佇列

4.建立乙個單獨的執行緒用於迴圈監聽客戶端連線請求  , 一旦用於連線伺服器,那麼就建立乙個新的單獨的通訊套接字和乙個新的執行緒,用於迴圈接收某乙個單獨的客戶端發來的訊息.. 把新建的用於和客戶端通訊的套接字存放在乙個字典集合裡.把新建的執行緒也存放在乙個執行緒字典裡.

b.客戶端的建立(主要流程)

1.建立乙個用於和服務端連線的 套接字

2.設定繫結要連線的伺服器的 ip和埠號

3.建立乙個單獨的執行緒用於迴圈接收服務端發來的訊息

c.異常處理 注意事項:

如果某乙個客戶端退出鏈結,我們捕捉到異常, 那麼我們就要 在字典集合裡同時刪除 用於和該客戶端 通訊的 單獨的執行緒和單獨的套接字

在呼叫每乙個sendmsg方法 和 receivemsg方法, 以及建立鏈結的時候都要用 try...catch 捕捉異常, 先 捕捉 socket異常再捕捉 父類異常

d. 檔案傳輸 還是 文字傳輸

在每乙個訊息資料的  陣列前面, 我們 用乙個位元組來存放協議,,  當收到訊息時, 先判斷 訊息第乙個位元組資料, 從而決定我們以哪種方式去處理訊息.

----------------------

windows phone 7手機開發、

.net培訓、期待與您交流! ----------------------

詳細請檢視:

黑馬程式設計師 Socket網路程式設計聊天室

windows phone 7手機開發 net培訓 期待與您交流!using system using system.collections.generic using system.componentmodel using system.data using system.drawing usin...

黑馬程式設計師 多執行緒和socket的程式設計

windows phone 7手機開發 net培訓 1 主要介紹單執行緒和多執行緒的 2 多執行緒的重入 using system using system.collections.generic using system.componentmodel using system.data using...

黑馬程式設計師 Socket網路程式設計 聊天室

windows phone 7手機開發 net培訓 期待與您交流!一 網路中程序之間如何通訊?首先解決的問題是 如何唯一標識乙個程序,否則通訊無從談起。在本地,可以用程序的pid來唯一標識乙個程序,而在網路中則行不通。tcp ip協議族已解決了這個問題 網路層的 ip位址 可以唯一標識網路中的主機,...