黑馬程式設計師 C Socket學習總結

2021-06-08 06:07:37 字數 1978 閱讀 2298

---------------------- windows phone 7手機開發、.net培訓、期待與您交流! ----------------------

網路中的計算機實現通訊的前提是知道對方的ip位址和埠,然後建立通訊通道最後通訊,socket就是建立計算機通訊通道的類。

伺服器端建立乙個監聽套接字呼叫listen方法來監聽客戶端請求,瀏覽器(客戶端)用已知的伺服器ip位址和埠號建立請求套接字呼叫connect方法來向伺服器傳送請求  (個人認為當客戶端的套接字呼叫connect方法的同時也將自己的ip和埠號傳輸給伺服器),伺服器監聽到客戶端的請求後會呼叫accept重新生成乙個新的套接字 ,然後用這個新的套接字與客戶端的套接字進行通訊,其中伺服器接受客戶端請求的方法accept會一直等待客戶端傳送請求過來,客戶端接收伺服器訊息的方法receiv會一直等伺服器發來訊息 ,即accept方法與receiv方法會阻塞執行緒,因此會建立新執行緒來呼叫這兩個方法。

c#程式實現客戶端與伺服器通訊的**如下:

伺服器端程式:

socket  socketconn = null;//此套接字變數用來放監聽套接字接受客戶端請求後產生的乙個新的套接字

//例項化乙個tcp協議的套接字

wathchsocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);

//假設伺服器ip為:192.168.0.1,繫結埠號為:8899

ipaddress adress = ipaddress.parse("192.168.0.1");

//建立伺服器終端

ipendpoint endpoint = new ipendpoint(adress, 8899);

//繫結套接字終端

wathchsocket.bind(endpoint);

//伺服器開始監聽

wathchsocket.listen(10);

//建立乙個新執行緒來處理客戶端請求,若此處直接用wathchsocket.accept(),則伺服器端會一直等待客戶端請求,應用程式會被阻塞

thread = new thread(watchconnc);

thread.start();

//處理客戶端請求的方法watchconnc

void watchconnc()

}

//伺服器端接收客戶端訊息的方法 }}

//伺服器端向客戶端傳送訊息

private void btsend_click(object sender, eventargs e)

客戶端程式:

socket clientsock = null;

thread receivetthread = null;

//建立客戶端套接字

clientsock = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);

//客戶端套接字clientsock向伺服器傳送請求

clientsock.connect(ipaddress.parse("192.168.0.1"), 8899);

//讓執行緒receivetthread接收伺服器傳送來的訊息

receivetthread = new thread(receiv);

receivetthread.start();

客戶端接收伺服器訊息的方法

private void receiv()

}客戶端向伺服器傳送訊息

private void cbtsend_click(object sender, eventargs e)

---------------------- windows phone 7手機開發、.net培訓、期待與您交流! ----------------------

黑馬程式設計師 OC FOUNDATION框架總結

asp.net unity開發 net培訓 期待與您交流!1.nsstring字串的使用,nsstring物件,一旦建立,就不可以進行再改變,如需要乙個可以更改的字元 串物件,需要建立nsstring的可變子類nsmutablestring.字串的建立 1.2 建立乙個字串常量 nsstring s...

黑馬程式設計師 學習筆記

windows phone 7手機開發 net培訓 期待與您交流!filestream sqlconnection實現了idispose介面,用完需要被釋放掉 using sqlconnection conn new sqlconnection 用完被釋放掉了 當close後還可以再進行open,物...

黑馬程式設計師

asp.net android ios開發 net培訓 期待與您交流!map hashtable 底層是雜湊表資料結構,不可以存入null鍵和null值。該執行緒是同步的,jdk1.0出現,效率低。hashmap 底層是雜湊表資料結構,允許使用null鍵和null值。該集合執行緒是不同步的,將has...