----------------------
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位址 可以唯一標識網路中的主機,...