---------------------- windows phone 7手機開發、net培訓、期待與您交流! ----------------------
關於網路程式設計中服務端與客服端通訊的自我理解,求評鑑。
網路通訊其實可以看做是網路節點之間的通訊,或者更直白的說是網絡卡之間的資料互動。
而網路節點(ipendpoint 物件)是由ip位址(ipaddress 物件)和埠(如:8080)組成。
網路節點之間的通訊是通過通訊工具(socket 物件)和對方的網路節點資訊來實現的(打**需要手機和對方**號碼)。
伺服器和客戶端在我看來,最大的不同是:伺服器是相對固定的(只有乙個),而客戶端可以有很多個,他們之間是一對多的關係。
所以,伺服器需要繫結(socket 物件.bind())到乙個固定的網路節點(不能隨意更改),客戶端則不需要。
雖然伺服器與眾多客戶端通訊,但是伺服器為每乙個與之通訊的客戶端分配乙個固定的socket並將之儲存到乙個容器裡(如dictory)以便通訊識別,直到通訊結束,socket銷毀。
通訊過程:
一、伺服器啟動並監聽客戶端請求:
//通過ip位址和埠建立網路節點物件
ipaddress address=ipaddress.parse(伺服器ip位址);
ipendpoint endpoint=new ipendpoint(address,int.parse(埠));
//建立乙個套接字(工具,固定**)
socket socketwatch =new socket(addressfamily.internetwork,sockettype.stream,protocoltype.tcp);
//將套接字繫結到唯一的網路節點上
socketwatch.bind(endpoint);
//設定監聽佇列長度
socketwatch.listen(10);
//通過執行緒為每乙個與之連線的客服端分配乙個socket物件:
thread threadwatch=new thread(watchconnecting);//建立負責監聽的執行緒,並傳入監聽方法
threadwatch.isbackground=true;//設定為後台執行緒
threadwatch.start();//開啟執行緒
//建立監聽方法
void watchconnecting()
二、客戶端連線伺服器
//通過ip位址和埠建立要連線的伺服器網路節點物件
ipaddress address=ipaddress.parse(伺服器ip位址);
ipendpoint endpoint=new ipendpoint(address,int.parse(埠));
//建立乙個套接字(工具,固定**)
socket socketclient =new socket(addressfamily.internetwork,sockettype.stream,protocoltype.tcp);
//向伺服器網路節點傳送連線請求
socketclient.connect(endpoint);
三、伺服器端向客戶端傳送訊息,客戶端接收訊息
1、//通過ip位址和埠建立網路節點物件
ipaddress address=ipaddress.parse(伺服器ip位址);
ipendpoint endpoint=new ipendpoint(address,int.parse(埠));
//建立乙個套接字(工具,固定**)
socket socketwatch =new socket(addressfamily.internetwork,sockettype.stream,protocoltype.tcp);
//將套接字繫結到唯一的網路節點上
socketwatch.bind(endpoint);
//設定監聽佇列長度
socketwatch.listen(10);
//建立乙個dictory用來儲存所有與伺服器通訊的套接字
dictorydic=new dictory;
//通過執行緒為每乙個與之連線的客服端分配乙個socket物件:
thread threadwatch=new thread(watchconnecting);//建立負責監聽的執行緒,並傳入監聽方法
threadwatch.isbackground=true;//設定為後台執行緒
threadwatch.start();//開啟執行緒
//獲取與要傳送資訊的客戶端套接字,並呼叫方法傳送訊息
string strmsg="要傳送的訊息";
byte arrmsg=system.text.encoding.utf8.getbytes(strmsg);
dic[lbonline.text].send(arrmsg);//從lbonline控制項中取得網路節點資訊,並從套接字集合裡獲得客戶端套接字
//建立監聽方法
void watchconnecting()
2、客戶端接收訊息
//通過ip位址和埠建立要連線的伺服器網路節點物件
ipaddress address=ipaddress.parse(伺服器ip位址);
ipendpoint endpoint=new ipendpoint(address,int.parse(埠));
//建立乙個套接字(工具,固定**)
socket socketclient =new socket(addressfamily.internetwork,sockettype.stream,protocoltype.tcp);
//向伺服器網路節點傳送連線請求
socketclient.connect(endpoint);
//建立執行緒 監聽伺服器端發來的訊息
thread threadclient=new thread(recmsg);
void recmsg()
}以上只是部分功能,其他功能**大同小異。當然,以上**有很多重複的地方,只是為了
單獨說明某乙個功能模組的執行過程,並不能作為實際程式設計**,有錯誤的地方請指正,謝謝!
---------------------- windows phone 7手機開發、 .net培訓 期待與您交流! ----------------------
詳情請檢視:
黑馬程式設計師 網路程式設計
asp.net android ios開發 net培訓 期待與您交流!1.套接字 socket 用於描述 ip位址和埠,是乙個通訊鏈的控制代碼 就是兩個程式通訊用的 類似於 2.有兩種型別 流式socket 是一種面向連線的 socket 針對於面向連線的 tcp服務應用,安全,但效率低 資料報式 ...
黑馬程式設計師 網路程式設計
asp.net android ios開發 net培訓 期待與您交流!1 網路程式設計 1 網路程式設計 通過程式語言實現計算機鍵的資料通訊。2 網路程式設計的三要素 a ip位址。網路中每一台計算機的唯一標識。b 埠 用於標識程序的邏輯位址 c 協議 定義通訊規則 舉例 我要和小青說話。a 找到小...
黑馬程式設計師 網路程式設計
asp.net unity開發 net培訓 期待與您交流!網路傳輸過程 1,找到對方ip 2,資料傳送到指定埠 每個應用程式對應乙個埠 3,定義通訊規則,即協議 tcp ip tcp 1,面向連線,形成傳輸資料的通道 像打 2,連線中進行大量資料量傳輸 3,可靠協議,三次握手,4,必須建立連線,效率...