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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SOCK_DGRAM(数据报套接字)与SOCK_STREAM(流套接口)的区别

發布時間:2024/1/23 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SOCK_DGRAM(数据报套接字)与SOCK_STREAM(流套接口)的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、SOCK_DGRAM (數據報套接字)特性:


1、分組在發送后,可能無序地到達接收端
2、分組可能丟失。如果發生丟失,不會采取任何補救的措施,而且接受端也不必知道有分租丟失。
3、數據報分組有尺寸大小的限制,如果超出限制,在某些路由器和節點上就無法傳送。
4、分組是在不建立連接的情況下被發送到遠程進程的。


二、SOCK_STREAM (流套接口)特性:


1、不保留任何消息的邊界:舉一個例子:本地主機通過兩次獨立的write(2)調用向遠程主機發送數據,第一次本地進程寫入25字節的數據,并通過套接口發送到遠程進程,第二次再寫入30字節的數據發往遠程進程,總共55字節的數據,而遠程進程從套接口接收數據時,將消息作為一個完整的單元來接收,或是通過若干次獨立的讀操作來將數據取走,即接受端并不知道這55字節的數據是分25字節和30字節兩次來發送的。
2、有序性:可以保證接受的數據字節與發送是順序完全一致(意味著通信之前必須建立一個連接)
3、無錯性:可以保證接受的數據在接收端被無錯的接受。如果有錯誤發生,在嘗試完所有的錯誤恢復措施后仍無法消除錯誤,流套接口就會報告錯誤。所進行的錯誤恢復措施嘗試是完全自動的,不需編程者的指導。

三、SOCK_DGRAM(數據報套接字)與SOCK_STREAM(流套接口)的區別:

如果你需要傳輸的數據是準確的,建議采用TCP,也就是 SOCK_STREAM。
? ? ? ?如果你傳輸的是視頻音頻等數據,丟幾個包也無所謂的,可以采用UDP,也就是 ?SOCK_DGRAM
函數原型。
int socket(int domain, int type, int protocol);
第一個參數指定應用程序使用的通信協議的協議族,對于TCP/IP協議族,該參數置AF_INET;
第二個參數指定要創建的套接字類型,流套接字類型為SOCK_STREAM、數據報套接字類型為SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不適用某種特定的協議去封裝它,而是由程序自行處理數據包以及協議首部);
兩個重要的類型是 SOCK_STREAM 和 SOCK_DGRAM。 SOCK_STREAM表明數據象字符流 一樣通過 socket 。而 SOCK_DGRAM 則表明數據將是數據報(datagrams)的形式。
下面表示通信協議族用TCP/IP協議族,以流套接字類型傳輸,使用TCP協議
SOCKET ?testSocket ?= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);?
下面表示通信協議族用TCP/IP協議族,以數據報套接字類型傳輸,使用UDP協議
SOCKET testSocket ?= ?socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

總結

以上是生活随笔為你收集整理的SOCK_DGRAM(数据报套接字)与SOCK_STREAM(流套接口)的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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