日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Socket api接口--Send(),Recv()的长度问题

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Socket api接口--Send(),Recv()的长度问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個包沒有固定長度,以太網限制在46-1500字節,1500就是以太網的MTU,超過這個量,TCP會為IP數據報設置偏移量進行分片傳輸,現在一般可允許應用層設置8k(NTFS系統)的緩沖區,8k的數據由底層分片,而應用層看來只是一次發送。而 windows的緩沖區經驗值是4k。

? ? ?

Socket本身分為兩種,流(TCP)和數據報(UDP),你的問題針對這兩種不同使用而結論不一樣。甚至還和你是用阻塞、還是非阻塞Socket來編程有關。

????????1、通信長度,這個是你自己決定的,沒有系統強迫你要發多大的包,實際應該根據需求和網絡狀況來決定。對于TCP,這個長度可以大點,但要知道,Socket內部默認的收發緩沖區大小大概是8K,你可以用SetSockOpt來改變。但對于UDP,就不要太大,一般在1024至10K。注意一點,你無論發多大的包,IP層和鏈路層都會把你的包進行分片發送,一般局域網就是1500左右,廣域網就只有幾十字節。分片后的包將經過不同的路由到達接收方,對于UDP而言,要是其中一個分片丟失,那么接收方的IP層將把整個發送包丟棄,這就形成丟包。顯然,要是一個UDP發包佷大,它被分片后,鏈路層丟失分片的幾率就佷大,你這個UDP包,就佷容易丟失,但是太小又影響效率。最好可以配置這個值,以根據不同的環境來調整到最佳狀態。
???????? send()函數返回了實際發送的長度,在網絡不斷的情況下,它絕不會返回(發送失敗的)錯誤,最多就是返回0 。對于TCP你可以寫一個循環發送。當send函數返回SOCKET_ERROR時,才標志著有錯誤。但對于UDP,你不要寫循環發送,否則將給你的接收帶來極大的麻煩。所以UDP需要用SetSockOpt來改變Socket內部Buffer的大小,以能容納你的發包。明確一點,TCP作為流,發包是不會整包到達的,而是源源不斷的到,那接收方就必須組包。而UDP作為消息或數據報,它一定是整包到達接收方。
????????2、關于接收,一般的發包都有包邊界,首要的就是你這個包的長度要讓接收方知道,于是就有個包頭信息,對于TCP,接收方先收這個包頭信息,然后再收包數據。一次收齊整個包也可以,可要對結果是否收齊進行驗證。這也就完成了組包過程。UDP,那你只能整包接收了。要是你提供的接收Buffer過小,TCP將返回實際接收的長度,余下的還可以收,而UDP不同的是,余下的數據被丟棄并返回WSAEMSGSIZE錯誤。注意TCP,要是你提供的Buffer佷大,那么可能收到的就是多個發包,你必須分離它們,還有就是當Buffer太小,而一次收不完Socket內部的數據,那么Socket接收事件(OnReceive),可能不會再觸發,使用事件方式進行接收時,密切注意這點。這些特性就是體現了流和數據包的區別。
????????補充一點,接收BuffSize >= 發送BuffSize >= 實際發送Size,對于內外部的Buffer都適用,上面講的主要是Socket內部的Buffer大小關系。
????????3、TCP是有多少就收多少,如果沒有當然阻塞Socket的recv就會等,直到有數據,非阻塞Socket不好等,而是返回WSAEWOULDBLOCK。UDP,如果沒有數據,阻塞Socket就會等,非阻塞Socket也返回WSAEWOULDBLOCK。如果有數據,它是會等整個發包到齊,并接收到整個發包,才返回。

總結

以上是生活随笔為你收集整理的Socket api接口--Send(),Recv()的长度问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷激情网 | 91视频国产免费 | 肉丝超薄少妇一区二区三区 | 人人妻人人爽一区二区三区 | 中文字幕精品一区久久久久 | 日韩不卡高清 | 精品无码久久久久成人漫画 | 亚洲aⅴ | 欧美三级色图 | 亚洲国产久 | 欧美一区二区三区四区五区六区 | 日韩亚洲欧美中文字幕 | 激情综合小说 | 亚洲精品99 | 波多野吉衣在线视频 | 一区二区三区四区在线视频 | 国产成人精品免高潮在线观看 | 毛片久久久 | 97国产在线观看 | 在线观看www视频 | 大香焦久久 | 欧美极品在线 | 波多野结衣一区二区三区在线 | 国产精品丝袜黑色高跟鞋 | 亚洲视频在线观看视频 | 久久伊人成人 | 性少妇bbw张开 | 性的免费视频 | 在线99| 亚洲欧美在线免费 | 最近中文字幕在线观看 | 国v精品久久久网 | 少妇裸体淫交视频免费看高清 | 男人操女人的软件 | 精品中文字幕视频 | 女生扒开尿口 | 久久色网站 | 葵司在线视频 | 欧美日韩亚洲成人 | 国产精品区二区三区日本 | 成人黄色在线观看 | 人人叉人人| 成人黄色激情网 | 国产精品视频一二三区 | 一区二区三区美女 | 日韩毛片基地 | 丁香六月av | 一区二区三区精品久久久 | www一起操 | 麻豆视频在线播放 | 久久美女av | 日韩av无码中文字幕 | 久久91久久 | 美女隐私免费观看 | 三日本三级少妇三级99 | 欧洲金发美女大战黑人 | 久一在线视频 | 深夜在线免费视频 | 国产又黄又粗的视频 | 亚洲一区二区视频网站 | 中文字幕dvd | 加勒比精品在线 | 亚洲毛片一区 | 午夜不卡影院 | 免费操| 人人干人人舔 | zoo性欧美 | 男人看片网站 | 成人欧美在线观看 | 不卡黄色 | 正在播放木下凛凛xv99 | 锦绣未央在线观看 | 炕上如狼似虎的呻吟声 | 国产成人精品免费网站 | 亚洲天堂一区在线观看 | youjizz韩国| а√天堂资源在线 | 在线能看的av | 午夜精品在线免费观看 | 又色又爽又黄无遮挡的免费视频 | 一区二区三区四区欧美 | 五月婷久久 | 久久人人爽人人爽人人片 | 青草视屏 | 日韩精品视频三区 | 肥熟女一区二区三肥熟女 | 欧美寡妇性猛交 | 亚洲av电影一区二区 | 在线观看亚洲一区二区 | 国产精品午夜一区二区 | 色哟哟无码精品一区二区三区 | 成人久久18免费网站图片 | 亚洲精品偷拍视频 | 911av| 欧美性猛交xxxx乱大交蜜桃 | 女性裸体无遮挡胸 | 日韩女女同性aa女同 | 亚洲区一区 | 69国产精品视频免费观看 |