TCPIP協(xié)議及網(wǎng)絡(luò)編程技術(shù):第7章 套接字編程(終版)_第1頁
TCPIP協(xié)議及網(wǎng)絡(luò)編程技術(shù):第7章 套接字編程(終版)_第2頁
TCPIP協(xié)議及網(wǎng)絡(luò)編程技術(shù):第7章 套接字編程(終版)_第3頁
TCPIP協(xié)議及網(wǎng)絡(luò)編程技術(shù):第7章 套接字編程(終版)_第4頁
TCPIP協(xié)議及網(wǎng)絡(luò)編程技術(shù):第7章 套接字編程(終版)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)第7章套接字編程2017年4月主要內(nèi)容客戶機/服務(wù)器模型套接字概念套接字編程基礎(chǔ)WinSock函數(shù)基于TCP的應(yīng)用編程基于UDP的應(yīng)用編程學(xué)習(xí)目標(biāo)理解客戶機/服務(wù)器模型的工作機理。掌握套接字的概念。掌握基于套接字的面向連接和無連接客戶機/服務(wù)器程序的設(shè)計原理,了解相關(guān)的WinSockAPI函數(shù)。通過程序?qū)嵗?,了解基于TCP和UDP的程序設(shè)計方法??蛻魴C/服務(wù)器模型客戶機/服務(wù)器模型的工作流程客戶機/服務(wù)器模型服務(wù)器程序特點一般啟動后就一直處于運行狀態(tài),以等待客戶機進程的請求;使用的端口往往是熟知端口,便于客戶機進程連接請求;一般擁有較多的系統(tǒng)資源,以便及時響應(yīng)各個客戶機進程的請求;可以并行處理多個客戶機進程的請求,但數(shù)目是有一定的限制;在通信時一般處于被動的一方,不需要知道客戶機的IP地址和端口信息??蛻魴C/服務(wù)器模型客戶機程序特點在需要服務(wù)器進程的服務(wù)時將向服務(wù)器進程請求服務(wù),并建立通信連接,得到滿足并完成處理后就終止通信連接;使用向系統(tǒng)申請的臨時端口與服務(wù)器進程進行通信,通信完成后將釋放該端口;擁有相對較少的系統(tǒng)資源;在通信時屬于主動的一方,需要事先知道服務(wù)器的IP地址和端口信息。套接字概念在網(wǎng)絡(luò)中要全局地標(biāo)識一個參與通信的進程,需要采用三元組:協(xié)議、主機IP地址、端口號。要描述兩個應(yīng)用進程之間的端到端的通信關(guān)聯(lián)則需要一個五元組:協(xié)議、信源機IP地址、信源應(yīng)用進程端口、信宿機IP地址、信宿應(yīng)用進程端口。套接字可以理解為通信連接的一端,其主要包括協(xié)議、主機IP地址和端口號。將兩個套接字連接到一起便可以在不同應(yīng)用進程之間傳遞數(shù)據(jù)套接字實現(xiàn)了對網(wǎng)絡(luò)和傳輸層協(xié)議的封裝,為應(yīng)用進程之間的通信連接的建立、數(shù)據(jù)傳輸?shù)韧ㄐ胚^程提供了編程界面。套接字概念使用套接字通信示意圖基于套接字的通信過程可以描述為:創(chuàng)建/打開套接字、向套接字收發(fā)數(shù)據(jù)、關(guān)閉套接字。套接字概念針對不同的通信需求,在TCP/IP中提供了3種不同套接字類型流套接字(SOCK_STREAM):用于提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù)。該服務(wù)將保證數(shù)據(jù)能夠?qū)崿F(xiàn)無差錯、無重復(fù)發(fā)送,并按順序接收。流套接字之所以能夠?qū)崿F(xiàn)可靠的數(shù)據(jù)服務(wù),原因在于其使用了傳輸控制協(xié)議——TCP。這類套接字中,傳輸數(shù)據(jù)之前必須在兩個應(yīng)用進程之間建立一條通信連接,這就確保了參與通信的兩個應(yīng)用進程都是活動并且響應(yīng)的。當(dāng)連接建立之后,應(yīng)用進程只要通過套接字向TCP層發(fā)送數(shù)據(jù)流,而另一個應(yīng)用進程便可以接收到相應(yīng)的數(shù)據(jù)流,它們不需要知道傳輸層是如何對數(shù)據(jù)流進行處理。特別需要注意的是通信連接必須顯式建立。該套接字類型適合傳輸大量的數(shù)據(jù),但不支持廣播和多播方式。套接字概念針對不同的通信需求,在TCP/IP中提供了3種不同套接字類型(續(xù))數(shù)據(jù)報套接字(SOCK_DGRAM)提供了一種無連接的服務(wù),通信雙方不需要建立任何顯式連接,數(shù)據(jù)可以發(fā)送到指定的套接字,并且可以從指定的套接字接收數(shù)據(jù)。該服務(wù)并不能保證數(shù)據(jù)傳輸?shù)目煽啃?,?shù)據(jù)有可能在傳輸過程中丟失或出現(xiàn)數(shù)據(jù)重復(fù),且無法保證順序地接收到數(shù)據(jù)。數(shù)據(jù)報套接字使用UDP進行數(shù)據(jù)的傳輸。與數(shù)據(jù)報套接字相比,使用流式套接字是一個更為可靠的方法,但對于某些應(yīng)用,建立一個顯式連接所導(dǎo)致的系統(tǒng)開銷是令人難以接收的,并且數(shù)據(jù)報套接字支持廣播和多播方式。套接字概念針對不同的通信需求,在TCP/IP中提供了3種不同套接字類型(續(xù))原始套接字(SOCK_RAW):與標(biāo)準套接字(標(biāo)準套接字指的是前面介紹的流套接字和數(shù)據(jù)報套接字)的區(qū)別在于:原始套接字可以讀寫內(nèi)核沒有處理的IP數(shù)據(jù)包,而流套接字只能讀取TCP的數(shù)據(jù),數(shù)據(jù)報套接字只能讀取UDP的數(shù)據(jù)。使用原始套接字的主要目的是為了避開TCP/IP處理機制,被傳送的數(shù)據(jù)包可以被直接傳送給需要它的應(yīng)用程序。因此,其主要是在編寫自定義底層協(xié)議的應(yīng)用程序時使用,例如各種不同的TCP/IP實用程序(如ping和arp)都使用原始套接字實現(xiàn),也可以用來實現(xiàn)數(shù)據(jù)包捕捉分析等。套接字編程基礎(chǔ)從應(yīng)用編程角度來看,套接字就是TCP/IP網(wǎng)絡(luò)編程接口的集合,它是應(yīng)用程序與TCP/IP協(xié)議族通信的中間軟件抽象層,其中包含了許多函數(shù)或例程,程序員可以用它們來開發(fā)網(wǎng)絡(luò)應(yīng)用程序套接字編程基礎(chǔ)面向連接的客戶機/服務(wù)器程序工作模型套接字編程基礎(chǔ)面向連接的客戶機/服務(wù)器程序工作模型服務(wù)器進程的五元組建立由socket函數(shù)確定所使用的協(xié)議。由bind函數(shù)實現(xiàn)與本地IP和端口號的綁定,即確定本地IP和端口號。由accept函數(shù)實現(xiàn)與遠程IP地址和端口號的關(guān)聯(lián),即確定遠程IP和端口號??蛻魴C進程五元組建立由socket函數(shù)確定所使用的協(xié)議。由bind函數(shù)實現(xiàn)與本地IP和端口號的綁定,其中本地IP和端口號既可以顯式指定也可以由系統(tǒng)自動確定。由connect函數(shù)實現(xiàn)與遠程IP地址和端口號的關(guān)聯(lián),即確定遠程IP和端口號。套接字編程基礎(chǔ)無連接的客戶機/服務(wù)器程序工作模型套接字編程基礎(chǔ)無連接的客戶機/服務(wù)器程序工作模型在編寫無連接客戶機/服務(wù)器模型的程序時,與面向連接不同:通信的一方可以不用bind函數(shù)綁定IP地址和端口,而由系統(tǒng)自動分配,但充當(dāng)服務(wù)器的一方需事先綁定IP地址和端口。不綁定IP地址和端口的一方必須首先向綁定IP地址和端口的一方發(fā)送數(shù)據(jù),即充當(dāng)客戶機進程。無連接應(yīng)用進程也可以調(diào)用connect函數(shù),但它不是用來向通信對方發(fā)出建立連接的請求,只是告訴內(nèi)核并由內(nèi)核保存,以便在數(shù)據(jù)傳輸過程中可以使用send和recv函數(shù)。在無連接的數(shù)據(jù)報傳輸過程中,雖然沒有顯式指定服務(wù)器方和客戶機方,但是作為服務(wù)器的應(yīng)用進程也必須先啟動,否則客戶機進程的請求傳不到服務(wù)器進程;在無連接的數(shù)據(jù)傳輸過程中,客戶和服務(wù)器進程無需事先建立通信連接,這樣當(dāng)發(fā)送數(shù)據(jù)時,發(fā)送方除了指定本地套接字的地址外,還需要指定接收方的套接字地址,即在數(shù)據(jù)收發(fā)過程中動態(tài)建立通信雙方的通信連接。套接字編程基礎(chǔ)常用的套接字API套接字編程基礎(chǔ)套接字編程相關(guān)數(shù)據(jù)結(jié)構(gòu)sockaddr數(shù)據(jù)結(jié)構(gòu)用于保存套接字的地址信息,具體定義如下:structsockaddr{unsignedshortsa_family;charsa_data[14]};其中:sa_family:用于指定地址族,如果是TCP/IP通信,該值取PF_INET和AF_NET;sa_data:用于保存套接字的IP地址和端口號信息。套接字編程基礎(chǔ)套接字編程相關(guān)數(shù)據(jù)結(jié)構(gòu)sockaddr_in數(shù)據(jù)結(jié)構(gòu)與sockaddr類似,該結(jié)構(gòu)體定義如下:structsockaddr_in{shortintsin_family;unsignedshortintsin_port;structin_addrsin_addr;unsignedcharsin_zero[8];};其中:sin_family:用于指定地址族,如果是TCP/IP通信,該值取PF_INET和AF_NET;sin_port:套接字通信的端口號;sin_addr:通信的IP地址;sin_zero[8]:用以填充0,保持與structsockaddr同樣大小。套接字編程基礎(chǔ)套接字編程相關(guān)數(shù)據(jù)結(jié)構(gòu)由于sockaddr數(shù)據(jù)結(jié)構(gòu)與sockaddr_in數(shù)據(jù)結(jié)構(gòu)的大小是相同的,指向sockaddr_in的指針可以通過強制轉(zhuǎn)換,轉(zhuǎn)換成指向sockaddr結(jié)構(gòu)的指針。套接字編程基礎(chǔ)網(wǎng)絡(luò)字節(jié)順序不同體系的CPU在內(nèi)存中的數(shù)據(jù)存儲往往存在差異。如Intel的x86系列處理器將低序字節(jié)存儲在起始地址,而一些RISC架構(gòu)的處理器,如IBM的370主機使用的PowerPC或Motorola公司生產(chǎn)的CPU,都將高序字節(jié)存儲在起始位置。這兩種不同的存儲方式被稱為低位優(yōu)先(little-endian)和高位優(yōu)先(big-endian)。對于網(wǎng)絡(luò)上的字節(jié)表示法有一個標(biāo)準——網(wǎng)絡(luò)字節(jié)順序,它與高位優(yōu)先相同。以便于不同體系結(jié)構(gòu)的計算機間的通信。WinSock函數(shù)WinSock是一個基于套接字模型的API,在MicrosoftWindows操作系統(tǒng)類中使用。它在Berkeley接口函數(shù)的基礎(chǔ)之上,還增加了基于消息驅(qū)動機制的Windows擴展函數(shù)。WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)WSAStartup函數(shù)功能:用于初始化WinSock,即檢查系統(tǒng)中是否有WindowsSockets的實現(xiàn)庫。格式:intWSAStarup(WORDwVersionRequested,LPWSADATAlpWSAData);參數(shù):wVersionRequested,要求使用WinSock的最低版本號,高位字節(jié)指定副版本,低位字節(jié)指定主版本;lpWSAData,WinSock的詳細資料返回值:成功調(diào)用返回0,不成功返回非0值說明:應(yīng)用程序調(diào)用的第一個WinSock函數(shù),只有成功調(diào)用之后才能調(diào)用其他函數(shù)WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)socket函數(shù)功能:為應(yīng)用程序創(chuàng)建套接字。格式:SOCKETsocket(intaf,inttype,intprotocol);參數(shù):af:使用的協(xié)議地址族,如果是TCP/IP,值為AF_INETtype:套接字的協(xié)議類型,SOCKET_STREAM(TCP),SOCK_DGRAM(UDP)Protocol:說明套接字使用的特定協(xié)議,如果不希望特別指定,可設(shè)為0。系統(tǒng)可根據(jù)前兩個確定使用的協(xié)議類型返回值:成功調(diào)用返回一個套接字標(biāo)識,失敗返回INVALID_SOCKET說明:通信前,必須通過調(diào)用此函數(shù)創(chuàng)建一個套接字WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)bind函數(shù)功能:實現(xiàn)套接字與主機本地IP地址和端口號的綁定。格式:intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);參數(shù):s:未綁定的套接字標(biāo)識name:與指定協(xié)議有關(guān)的地址結(jié)構(gòu)指針,sockaddr的結(jié)構(gòu)如前所示namelen:指定的name參數(shù)的長度返回值:成功調(diào)用返回0,失敗返回SOCKET_ERROR說明:如果應(yīng)用程序不關(guān)心地址,可以設(shè)為INADDR_ANY,端口號設(shè)為0,系統(tǒng)自動分配1000-5000之間的唯一端口號??赏ㄟ^getsockname()獲知所分配的地址WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)listen函數(shù)功能:將套接字設(shè)定為偵聽狀態(tài),準備接收由客戶機進程發(fā)出的連接請求。格式:intlisten(SOCKETs,intbacklog);參數(shù):s:已綁定地址,但還沒建立連接的套接字標(biāo)識backlog:指定正在等待連接的最大隊列長度返回值:成功調(diào)用返回0,失敗返回SOCKET_ERROR說明:僅適用于面向連接的套接字,用于服務(wù)器進程WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)connect函數(shù)功能:提出與一個服務(wù)器進程建立連接的請求,如果服務(wù)器進程接受請求,則服務(wù)器進程與客戶機進程之間便建立一條通信連接。格式:intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);參數(shù):s:建立連接的套接字標(biāo)識name:指向通信對方的套接字地址結(jié)構(gòu)的指針,表示s欲與其進行連接namelen:name參數(shù)的長度返回值:成功返回0,失敗返回SOCKET_ERROR說明:客戶機進程調(diào)用此函數(shù)激發(fā)建立連接的3次握手。如果之前沒有綁定套接字,則系統(tǒng)自動綁定。WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)accept函數(shù)功能:接受由客戶機進程調(diào)用connect函數(shù)發(fā)出的連接請求。格式:SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);參數(shù):s:處于偵聽狀態(tài)的套接字標(biāo)識addr:存放發(fā)出連接請求的客戶機進程IP地址信息的地址結(jié)構(gòu)指針addrlen:addr的長度返回值:成功時返回一個新的套接字標(biāo)識,失敗時返回INVALID_SOCKET說明:用于面向連接的服務(wù)器進程WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)shutdown函數(shù)功能:關(guān)閉套接字讀寫通道,即停止套接字接收/傳送的功能。格式:intshutdown(SOCKETs,inthow);參數(shù):

s:套接字標(biāo)識how:描述停止哪些操作值為0,則不再接收資料值為1,則不再允許傳送資料值為2,則不再接收且不再傳送資料返回值:成功返回0,失敗返回SOCKET_ERROR說明:只是停止套接字的接收或傳送功能,并沒有關(guān)閉套接字WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)closesocket函數(shù)功能:關(guān)閉套接字,釋放與套接字關(guān)聯(lián)的所有資源格式:intclosesocket(SOCKETs);參數(shù):s:將要關(guān)閉的套接字標(biāo)識返回值:成功返回0,失敗返回SOCKET_ERROR說明:套接字設(shè)定為SO-DONTLINGER,則等數(shù)據(jù)緩沖隊列中的數(shù)據(jù)傳輸完畢之后關(guān)閉套接字套接字設(shè)定為SO-LINGER,按兩種情況處理:Timeout為0,套接字馬上關(guān)閉,數(shù)據(jù)丟失Timeout不為0,則等數(shù)據(jù)傳輸完畢或Timeout為0時關(guān)閉套接字WinSock函數(shù)套接字與通信連接的建立與關(guān)閉函數(shù)WSACleanup函數(shù)功能:終止使用WinSock,釋放為應(yīng)用程序分配的相關(guān)資源。格式:intWSACleanup();參數(shù):無參數(shù)返回值:成功返回0,失敗返回非0值說明:任何基于WinSock的應(yīng)用程序在最后必須調(diào)用的函數(shù)WinSock函數(shù)數(shù)據(jù)傳輸函數(shù)recv函數(shù)功能:在已建立連接的套接字上接收數(shù)據(jù)。格式:intrecv(SOCKETs,charFAR*buf,intlen,intflags);參數(shù):s:已建立連接的套接字標(biāo)識buf:存放接收到的數(shù)據(jù)的緩沖區(qū)指針len:buf的長度flags:調(diào)用操作方式(0,MSG_PEEK,MSG_OOB)返回值:接收成功時,返回所接收到的數(shù)據(jù)長度,連接結(jié)束時返回0,接收失敗時返回SOCKET_ERROR說明:用于在已建立連接的流式或數(shù)據(jù)報套接字上接收數(shù)據(jù)WinSock函數(shù)數(shù)據(jù)傳輸函數(shù)recvfrom函數(shù)功能:在無連接的套接字上接收數(shù)據(jù)。格式:intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsocketaddrFAR*from,intFAR*fromlen);參數(shù):s:套接字標(biāo)識buf:接收數(shù)據(jù)緩沖區(qū)len:buf的長度flags:調(diào)用操作方式,與recv中的flags相同from:指向存儲有源地址的socketaddr緩沖區(qū)的指針fromlen:from緩沖區(qū)的大小

返回值:接收成功時,返回所接收到的數(shù)據(jù)長度,連接結(jié)束時返回0,接收失敗時返回SOCKET_ERROR說明:也可以用于面向連接的據(jù)接收操作,與recv作用相同WinSock函數(shù)數(shù)據(jù)傳輸函數(shù)send函數(shù)功能:在已建立連接的套接字上發(fā)送數(shù)據(jù)。格式:intsend(SOCKETs,constcharFAR*buf,intlen,intflags);參數(shù):s:套接字標(biāo)識buf:發(fā)送數(shù)據(jù)緩沖區(qū)len:buf的長度flags:用于控制數(shù)據(jù)傳輸方式(0,MSG_DONTROUTE,MSG_OOB)返回值:發(fā)送成功時,返回所發(fā)送的數(shù)據(jù)長度,連接結(jié)束時返回0,發(fā)送失敗時返回SOCKET_ERROR說明:用于在已建立連接的流式或數(shù)據(jù)報套接字上發(fā)送數(shù)據(jù)WinSock函數(shù)數(shù)據(jù)傳輸函數(shù)sendto函數(shù)功能:在無連接套接字上發(fā)送數(shù)據(jù)。格式:intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen);參數(shù):s:套接字標(biāo)識buf:發(fā)送數(shù)據(jù)緩沖區(qū)首地址len:buf的長度flags:發(fā)送方式標(biāo)志位,與send函數(shù)相同to:目的套接字的地址tolen:目的套接字地址to大小返回值:發(fā)送成功時,返回所發(fā)送的數(shù)據(jù)長度,連接結(jié)束時返回0,發(fā)送失敗時返回SOCKET_ERROR說明:主要用于無連接的套接字WinSock函數(shù)其他相關(guān)函數(shù)setsockopt函數(shù)功能:設(shè)定套接字的狀態(tài)格式:intsetsockopt(SOCKETs,intlevel,intoptname,constcharFAR*optval,intoptlen);參數(shù):s:套接字標(biāo)識level:選定定義的層次(SOL_SOCKET,IPPROTO_IP,IPPROTO_TCP)optname:選項名稱optval:選項的設(shè)定值optlen:選項設(shè)定值的長度返回值:成功返回0,失敗返回SOCKET_ERROR說明:用于任意類型、任意狀態(tài)套接字的設(shè)置選項值WinSock函數(shù)其他相關(guān)函數(shù)setsockopt函數(shù)SOL_SOCKET選項級別選項值類型說明SO_ACCEPTCONN布爾值如為TRUE(真),表明套接字處于監(jiān)聽模式SO_BROADCAST布爾值如TRUE,表明套接字已配置成對廣播消息進行發(fā)送SO_CONNECT_TIME整數(shù)返回套接字建立連接的時間,以秒為單位,如尚未連接,返回0xffffffff(微軟專用)SO_DEBUG布爾值如果TRUE,就允許調(diào)試輸出(W32不支持)

SO_DONTLINGER布爾值如果是TRUE,則禁用SO_LINGERSO_LINGERstructlinger設(shè)置或獲取當(dāng)前的拖延值SO_DONTROUTE布爾值如果TRUE,便直接向網(wǎng)絡(luò)接口發(fā)送消息,毋需查詢路由表(微軟無效)SO_ERROR布爾值返回錯誤狀態(tài)SO_EXCLUSIVEADDRUSE布爾值如果TRUE,套接字綁定那個本地端口就不能重新被另一個進程使用SO_KEEPALIVE布爾值如果TRUE,套接字就會進行配置,在會話過程中發(fā)送”保持活動”消息SO_MAX_MSG_SIZE無符號整數(shù)對一個面向消息的套接字來說,一條消息的最大長度SO_OOBINLINE布爾值如果是TRUE,帶外數(shù)據(jù)就會在普通數(shù)據(jù)流中返回(W32不支持)

SO_PROTOCOL_INFOWSAPROTOCOL_INFO套接字綁定的那種協(xié)議的特征SO_RCVBUF整數(shù)面向接收操作,為每個套接字分別獲取或設(shè)置緩沖區(qū)長度SO_REUSEADDR布爾值如果是TRUE,套接字就可與一個正由其他套接字使用的地址綁定到一起,或與處在TIME_WAIT狀態(tài)的地址綁定到一起SO_SNDBUF布爾值設(shè)置分配給套接字的數(shù)據(jù)發(fā)送緩沖區(qū)的大小SO_TYPE整數(shù)返回指定套接字的類型(如SOCK_DGRAM和SOCK_STREAM等等)SO_SNDTIMEO整數(shù)獲取或設(shè)置套接字上的數(shù)據(jù)發(fā)送超時時間(以毫秒為單位)SO_RCVTIMEO整數(shù)獲取或設(shè)置與套接字上數(shù)據(jù)接收對應(yīng)的超時時間值(以毫秒為單位)SO_UPDATE_ACCEPT_CONTEXTSOCKET更新SOCKET狀態(tài)WinSock函數(shù)其他相關(guān)函數(shù)getsockopt函數(shù)功能:獲取指定套接字上目前狀態(tài)設(shè)定的相關(guān)信息格式:intgetsockopt(SOCKETs,intlevel,intoptname,charFAR*optval,int*optlen);參數(shù):s:套接字標(biāo)識level:選定定義的層次(SOL_SOCKET,IPPROTO_IP,IPPROTO_TCP)optname:選項名稱optval:選項的設(shè)定值optlen:選項設(shè)定值的長度返回值:成功返回0,失敗返回SOCKET_ERROR說明:用于獲取目前套接字的某些狀態(tài)設(shè)定值WinSock函數(shù)其他相關(guān)函數(shù)htonl函數(shù)功能:將4字節(jié)主機字節(jié)順序的數(shù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。格式:u_longhtonl(u_longhostlong);htons函數(shù)功能:將2字節(jié)主機字節(jié)順序的數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。格式:u_shorthtons(u_shorthostshort);ntohl函數(shù)功能:4字節(jié)網(wǎng)絡(luò)字節(jié)順序的數(shù)轉(zhuǎn)換為主機字節(jié)順序。格式:u_longntohl(u_longnetlong);WinSock函數(shù)其他相關(guān)函數(shù)ntohs函數(shù)功能:將2字節(jié)網(wǎng)絡(luò)字節(jié)順序的數(shù)據(jù)轉(zhuǎn)換為主機字節(jié)順序。格式:u_shortntohs(u_shortnetshort);inet_addr函數(shù)功能:將點分十進制數(shù)表示的IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序的IP地址。格式:unsignedlonginet_addr(constchar*cp);inet_ntoa函數(shù)功能:將網(wǎng)絡(luò)字節(jié)順序表示的IP地址轉(zhuǎn)換為點分十進制數(shù)表示的IP地址。格式:char*FARinet_n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論