開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服
首頁(yè)
好書(shū)
留言交流
下載APP
聯(lián)系客服
2013.02.19
面向?qū)ο笳n上,金旭亮老師(CSDN博客專(zhuān)家,大牛)說(shuō),只有通過(guò)網(wǎng)絡(luò)編程才能提升一個(gè)人的編程能力,因?yàn)樵贑#中的網(wǎng)絡(luò)編程, 又要用到多線程控制,還要考慮通信的效率,通信的控制等,要控制數(shù)據(jù)傳送的正確性,可靠性。雖然以前接觸了一部分網(wǎng)絡(luò)編程,但是還是理論不夠系統(tǒng),所以打算在系統(tǒng)的學(xué)習(xí)一下網(wǎng)絡(luò)編程的基礎(chǔ)理論。
1. Socket簡(jiǎn)介
windows Socket,就是在windows下編程用的socket, socket其實(shí)就是一套網(wǎng)絡(luò)編程機(jī)制,封裝了對(duì)網(wǎng)絡(luò)數(shù)據(jù)流的一些控制。Socket最早本來(lái)是unix系統(tǒng)下的編程接口,但是后來(lái)在unix上的廣泛使用,在美國(guó)政府和軍方的推動(dòng)下,TCP/IP網(wǎng)絡(luò)的流行,以及TCP/IP模型成為標(biāo)準(zhǔn)模型,Socket也成為Unix上標(biāo)準(zhǔn)的網(wǎng)絡(luò)編程接口。1991年微軟把Unix上面的Socket的原理引用到自己的windows平臺(tái)下,所以有了現(xiàn)在廣泛使用的windows socket. 因?yàn)榫W(wǎng)絡(luò)模型已經(jīng)非常穩(wěn)定了,而且多年沒(méi)有大的改變,所以在Socket的發(fā)展上也比較平緩,幾乎沒(méi)有大的改變,現(xiàn)在最常用的就是32位的wsock.dll.提供我們進(jìn)行在windows中網(wǎng)絡(luò)編程。
2. C#中的Socket
C#中用的Socket是在windows socket的基礎(chǔ)上進(jìn)行封裝的類(lèi)庫(kù),更方便的使用。并且C#中還在Socket的基礎(chǔ)上繼續(xù)封裝了TcpListener,TcpClient,UdpClient等類(lèi)庫(kù)來(lái)簡(jiǎn)化我們的開(kāi)發(fā)工作。
3. 網(wǎng)絡(luò)中的通信
為了讓網(wǎng)絡(luò)中的兩臺(tái)電腦中的兩個(gè)進(jìn)程可以進(jìn)行通信,我們需要通過(guò)IP地址來(lái)標(biāo)識(shí)主機(jī),用端口號(hào)標(biāo)識(shí)程序,之所以不用進(jìn)程號(hào)標(biāo)識(shí)程序,是因?yàn)樵诓煌慕K端上相同的程序可能會(huì)有不同的進(jìn)程號(hào),而且不同的操作系統(tǒng)可能也會(huì)有不同的進(jìn)程號(hào)分配方式。
Socket實(shí)際上就是網(wǎng)絡(luò)進(jìn)程通信中所要使用的一些緩沖區(qū)及相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
4. window Socket的類(lèi)型
有三種不同的windows Socket:
(1). 流式套接字(SOCK_STREAM):提供了一種可靠地,面向連接的雙向數(shù)據(jù)傳輸?shù)姆?wù),在這種套接字中,數(shù)據(jù)的傳送沒(méi)有差錯(cuò),不會(huì)重復(fù)發(fā)送。如果使用TCP協(xié)議發(fā)送大量數(shù)據(jù),則需要使用這種套接字。
(2). 數(shù)據(jù)報(bào)套接字(SOCK_DGRAM): 提供無(wú)連接的,不可靠的雙向數(shù)據(jù)傳送。數(shù)據(jù)在傳送的過(guò)程中可能會(huì)丟失,但是不負(fù)責(zé)丟失的數(shù)據(jù),并且傳送的數(shù)據(jù)以包為基本單位,包的最大為1046字節(jié)的內(nèi)容,接收到的包不保證按照發(fā)送順序。UDP協(xié)議實(shí)現(xiàn)了數(shù)據(jù)報(bào)套接字。
(3). 原始套接字(SOCK_RAW): 可以對(duì)較低層協(xié)議進(jìn)行訪問(wèn)。
網(wǎng)絡(luò)上的所有應(yīng)用程序都是基于套接字進(jìn)行開(kāi)發(fā)的,無(wú)論的網(wǎng)路游戲還是網(wǎng)頁(yè),都是在套接字的接觸上進(jìn)行的再次開(kāi)發(fā)。
套接字屏蔽了網(wǎng)絡(luò)模型和TCP/IP協(xié)議的復(fù)雜性,使得網(wǎng)絡(luò)開(kāi)發(fā)變得更加
微信登錄中...請(qǐng)勿關(guān)閉此頁(yè)面