1. 程式人生 > >sendto、WSASendto,recvfrom、WSARecvfrom 區別?

sendto、WSASendto,recvfrom、WSARecvfrom 區別?

winsock1版的函式  無WSA字首

winsock2版的函式  加了WSA 字首

且前者是阻塞模式, 後者是非阻塞模式。 

若想設定前者為非阻塞模式

 u_long mode =  1;

ioctlsocket(sendsocket,FIONBIO,&mode);   //mode為非零是:非阻塞模式,為零是:阻塞模式 

sento(sendSocket,sendData,strlen(sendData),0,(LPSOCKADDR)&desAddr,sizeof(desAddr));//傳送資料

》》》  Windows擴充套件函式說明

          Windows Socket規範提供了一組基於Berkeley套接字函式的擴充套件函式。

         這些擴充套件函式在實現Socket功能的基礎上,還允許基於訊息或函式進行處理,處理非同步網路事件,開啟重疊I/O功能。除了WSAStartup()函式和WSACleanup()函式外,編寫Socket程式可以不使用這些擴充套件API函式,但是建議使用這些擴充套件函式以保持與Windows程式設計模式一致。

 表16-3中列出了有關Socket的Windows擴充套件函式。

表16-3  有關Socket的Windows擴充套件函式

Windows擴充套件函式

功    能

WSAAccept()

accept()函式的擴充套件版本,

允許條件接收和Socket分組

WSAAsyncGetHostByAddr()

根據地址非同步獲取主機,基於訊息實現

WSAAsyncGetHostByName()

根據名稱非同步獲取主機,基於訊息實現

WSAAsyncGetProtoByName()

根據名稱非同步獲取協議資訊,基於訊息實現

WSAAsyncGetProtoByNumber()

根據協議號非同步獲取協議資訊,基於訊息實現

WSAAsyncGetServByName()

根據伺服器名稱和埠號,非同步

獲取伺服器資訊,其是基於訊息實現的

WSAAsyncGetServByPort()

根據埠號和協議,非同步獲取服

務器資訊,其是基於訊息實現的

WSAAsyncSelect()

實現非同步版本的select()函式

WSACancelAsyncRequest()

取消非同步獲取系列的函式,即取消

WSAAsyncGetXByY()函式

WSACleanup()

退出底層的Windows Socket DLL的引用

WSACloseEvent()

銷燬事件物件

WSAConnect()

Connect()函式的擴充套件版本,允許交換

連線資料和QOS標準

WSACreateEvent()

建立事件物件

WSADuplicateSocket()

複製Socket

WSAEnumNetworkEvents()

列舉網路事件

WSAEnumProtocols()

列舉當前系統中每個有效的協議資訊

WSAEventSelect()

連線網路事件和事件物件

WSAGetLastError()

獲取最近的Windows Socket錯誤資訊

WSAGetOverlappedResult()

返回重疊操作的完成狀態

WSAGetQOSByName()

根據服務名獲取QOS引數

WSAHtonl()

Htonl()函式的擴充套件版本,將32位整

數從主機位元組順序轉換成網路位元組順序

WSAHtons()

Htons()函式的擴充套件版本,將16位整數

從主機位元組順序轉換成網路位元組順序

WSAIoctl()

ioctl 函式的重疊執行版本

WSAJoinLeaf()

增加一個結點到會話中

WSANtohl()

ntohl()函式的擴充套件版本,將32位整數從

網路位元組順序轉換成主機位元組順序

WSANtohs()

ntohs()函式的擴充套件版本,將16位整數

從網路位元組順序轉換成主機位元組順序

WSAProviderConfigChange()

接收安裝服務或解除安裝服務的通知訊息

WSARecv()

Recv()函式的擴充套件版本

WSARecvFrom()

recvfrom()函式的擴充套件版本

Windows擴充套件函式

功    能

WSAResetEvent()

重置事件物件

WSASend()

send()函式的擴充套件版本

WSASendTo()

sendto()函式的擴充套件版本

WSASetEvent()

設定事件物件

WSASetLastError()

設定最近的錯誤資訊

WSASocket()

socket()函式的擴充套件版本。使用

WSAPROTOCOL_INFO結構作

為輸入引數,並建立重疊socket

WSAStartup()

初始化Windows Sockets DLL

WSAWaitForMultipleEvents()

在多個事件物件上阻塞


      上面這些擴充套件函式是對Windows Socket規範提供的Socket函式的封裝,支援訊息和函式處理。

       如在WSAAsyncGetServByName()函式中,可以指定接收訊息的對話方塊控制代碼和訊息,當非同步函式執行完畢後,會發送訊息給對話方塊,使用者可以在對話方塊中捕獲相應的訊息進行處理。

      這與Windows的訊息程式設計模式是一致的。因此,Windows Socket擴充套件函式的封裝方便了Socket程式的開發。使用者可以儘量使用擴充套件函式開發Socket程式。



相關推薦

sendtoWSASendtorecvfromWSARecvfrom 區別

winsock1版的函式  無WSA字首 winsock2版的函式  加了WSA 字首 且前者是阻塞模式, 後者是非阻塞模式。  若想設定前者為非阻塞模式  u_long mode =  1; ioctlsocket(sendsocket,FIONBIO,&

left jionjionUnionUnion All有什麽區別?

left 重復行 兩個 結果 內連接 inner out 區別 left jion Left jion:Left join相對來說數據多些join必須兩表都有內連接inner Join:只連接兩個表匹配的行左外連接left join 或left outer join:左表在

XHTMLHTML4HTML5 之間的區別

這幾個都是W3C負責制定的一個標準,用於網頁內容的標籤。 HTML4是html標準中比較成熟的一個版本,使用時間比較長,也是現今大部分網頁遵循的標準。 XHTML 1.0標準 為了規範HTML,W3C結合XML制定了XHTML 1.0標準,XHTML是能滿足XML要求的HTM

畫素英寸Dpi 三者的區別以及關係

Dpi(每平方英寸畫素數目):影象細節程度的度量 Dpi 代表每平方英寸上所含“點”的數目,它決定了一副影象在細節上到底有多細(儘管並不依賴於你的視覺感受)。但是,什麼是“點”? “點”是一個模糊不清的術語。點可以指的是畫素、畫筆的一“點”或者是一個油墨印跡。 當你置身

Js-parentNodeparentElementchildNodeschildren 的區別

----------------------------------------------------------------------parentNode、parentElement,childNodes、children 它們有什麼區別呢? -------------

JS陣列常用方法:forEachmapfiltersomeeveryfilter與map區別

forEach() 方法對陣列的每一個元素執行一次提供的函式。 map() 方法建立一個新陣列,其結果是該陣列都執行一次函式,原函式保持不變。 filter() 方法使指定函式測試陣列的每一個元素,並放回一個通過元素的新陣列。 some() 方法測試該陣列有元素通過了指

一文總結應用WebHTTP伺服器ApacheNginxTomcatIISJBossGlassfish等區別

一個學習的總結,或者說是彙總,有些連結給出的觀點過時,已按照自己的理解經過修改編輯; 應用、Web、HTTP伺服器 這篇文章講述典型的Web伺服器的工作原理。 Web伺服器和應用伺服器有什麼區別?EAR和WAR部署包之間的不同? 參考stackove

Python&int&method&String切片索引列表元祖字典

count() you one 獲取 eth lang ber phone favor 一、int的兩個方法 a、 __add__() bit_length() number_one = 7number_two = 5print(number_one + number_tw

2018年慕課網視頻教程(vuereactdockerpythonjavaGo語言)

java、 tom 深度 面試 銷售 拉勾網 react code python升級 如需下述哪一個課程,加QQ: 3475362830,非免費,幾大洋,非誠勿擾! Go語言實戰流媒體視頻網站基於Golang協程實現流量統計系統Google資深工程師深度講解Go語言 jav

梯度與邊緣檢測常用運算元:RobertsPrewittSobelLOGCannyLapacian運算元

原文:https://blog.csdn.net/swj110119/article/details/51777422 原文:https://blog.csdn.net/gdut2015go/article/details/46779251 幾種邊緣檢測運算元的比較Robert

【Common】-NO.122.common.1 - pvuviptpsqpsrps術語

Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of Mastery:5 Practical Level:5 Desired Goal:5 Arc

3springboot:springboot配置檔案(配置檔案YAML屬性檔案值注入<@Value@ConfigurationProperties@PropertySource@ImportResource@Bean>)

1.配置檔案: springboot預設使用一個全域性配置檔案 配置檔名是固定的    配置檔案有兩種(開頭均是application,主要是檔案的字尾): ->application. properties ->application

【精】iOS知識樹知識點(包括物件Block訊息轉發GCD執行時runloop動畫PushKVOtableviewUIViewController提交AppStore)

        本文旨在總結iOS知識網路,知識點,該知識網路羅列出常見UIKit、Foundation的物件特點和一些使用經驗,可以看成是一本書;文字編輯採用樹的形式,對知識點進行羅列,並標註一些使用經驗(★)希望對初學者有用或給一些解決疑難雜症者提供思路;某些知識點會深入

準確率召回率F1 值ROCAUCmse,mape評價指標

在機器學習、資料探勘領域,工業界往往會根據實際的業務場景擬定相應的業務指標。本文旨在一起學習比較經典的三大類評價指標,其中第一、二類主要用於分類場景、第三類主要用於迴歸預測場景,基本思路是從概念公式,到

準確率召回率F1 值ROCAUCmsemape 評價指標

在機器學習、資料探勘領域,工業界往往會根據實際的業務場景擬定相應的業務指標。本文旨在一起學習比較經典的三大類評價指標,其中第一、二類主要用於分類場景、第三類主要用於迴歸預測場景,基本思路是從概念公式,到優缺點,再到具體應用(分類問題,本文以二分類為例)。 1.準確率P、召回

FILE檔案流的中對fopenfseekfreadfwritefprintffputsfgets的理解

目前課題中使用,記錄下來方便以後檢視。 fopen fopen函式用來開啟一個檔案,其呼叫的一般形式為: FILE * fopen(const char *path,const char * mode); fopen()函式中第一個形式引數表示檔名, 可以包含路徑和檔名

C#中流的讀寫器BinaryReaderBinaryWriterStreamReaderStreamWriter詳解

 問題一:為什麼要出現與檔案流配套的讀寫器型別呢?                    主要是因為檔案流物件在讀寫位元組的效率是相當高的,但是在處理其他型別的資料時會比較麻煩,                    所以就出現了二進位制讀寫器和文字讀寫器來解決這一問題。 

數值後面加“L”“l”“U”“u”“H”“h”“B”“b”數值前面加“0”和“0x”的意義

2018-01-14 建立人:Ruo_Xiao 2018-01-15 修改人:Ruo_Xiao 增加對long的說明。 2018-07-14 修改人:Ruo_Xiao 1、增加對數值後面加“

獨立的股票交易系統自帶股票發行撮合一致性高併發適合高校教學實訓

看了前幾年開發的一套股票交易系統,頗為滿意。雖然花了很多時間和精力,但是和上證所的系統相比較,覺得價效比極高。 股票交易系統最大的要求是安全、一致性高、支援高併發。我在設計時,根據交易規則和下單流程,決定在資料層進行撮合業務,把股票或資金凍結(鎖定)業務也放在資料層,速度奇

1byte1KB4KB1MB1GB用16進製表示的範圍。任意地址範圍求位元組數

請先開啟一個線上的2進位制轉16進位制的轉換器,便於理解除錯。首先 1個位元組=1byte=8Bit。位元組是計算機資訊科技用於計量儲存容量的一種計量單位,也表示一些計算機程式語言中的資料型別和語言字元。1KB = 1024byte = 2的10次方 byte,轉化為16進製