1. 程式人生 > >SOCK_STREAM和SOCK_DGRAM兩種型別的區別

SOCK_STREAM和SOCK_DGRAM兩種型別的區別

sock_stream 是有保障的(即能保證資料正確傳送到對方)面向連線的SOCKET,多用於資料(如檔案)傳送。

sock_dgram 是無保障的面向訊息的socket , 主要用於在網路上發廣播資訊。

SOCK_STREAM是基於TCP的,資料傳輸比較有保障。SOCK_DGRAM是基於UDP的,專門用於區域網,基於廣播SOCK_STREAM 是資料流,一般是tcp/ip協議的程式設計,SOCK_DGRAM分是資料抱,是udp協議網路程式設計

解釋一下:關於UDP

1、UDP協議適用埠分辨執行在同一臺裝置上的多個應用程式,UDP有不提供資料報分組、組裝和不能對資料包進行排序的缺點。也就是說,當報文傳送之後,是無法得知其是否安全完整到達的。

2、在網路質量令人不十分滿意的環境下,UDP協議資料包丟失會比較嚴重。

3、但是由於UDP的特性:它不屬於連線型協議,因而具有資源消耗小,處理速度快的優點,所以通常音訊、視訊和普通資料在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個資料包,也不會對接收結果產生太大影響。

關於TCP

1、TCP提供端到端、全雙工通訊;採用位元組流方式,如果位元組流太長,將其分段;提供緊急資料傳送功能。

2、TCP特性:

(1)面向連線的傳輸; 

(2)端到端的通訊; 

(3)高可靠性,確保傳輸資料的正確性,不出現丟失或亂序; 

(4)全雙工方式傳輸; 

(5)採用位元組流方式,即以位元組為單位傳輸位元組序列; 

(6)緊急資料傳送功能。所以如果你需要傳輸的資料是準確的,建議採用TCP,也就是sock_stream 如果你傳輸的是視訊音訊等資料,丟幾個包也無所謂的,可以採用UDP,也就是sock_dgram

相關推薦

SOCK_STREAMSOCK_DGRAM型別區別

sock_stream 是有保障的(即能保證資料正確傳送到對方)面向連線的SOCKET,多用於資料(如檔案)傳送。 sock_dgram 是無保障的面向訊息的socket , 主要用於在網路上發廣播資訊。 SOCK_STREAM是基於TCP的,資料傳輸比較有保障。SOCK

Apache伺服器no_sslopenssl型別區別

OpenSSL是表示帶有OpenSSL模組,利用OpenSSL就可以給Apache配置SSL安全連結的,也就是使用https方式進行訪問; no ssl則表示不帶OpenSSL模組,無法用於SSL安全

MFC程式設計 char*CString型別的互相轉換

問題 在程式設計時,因為用了c++作為邏輯層的編寫,其中的字串是以char*或者字元陣列的形式表現的,而不是以CString的物件表現的,尤其在從控制元件中讀取文字時,沒辦法使用等等,這裡,將介紹我使用的方法 char*到CString的轉換 char

C/SB/S架構區別與優缺點分析

iis 持久化數據 邏輯 刷新 lamp 滿足 tle 擴展 區別 C/S和B/S,是再普通不過的兩種軟件架構方式,都可以進行同樣的業務處理,甚至也可以用相同的方式實現共同的邏輯。既然如此,為何還要區分彼此呢?那我們就來看看二者的區別和聯系。 一、C/S 架構

form表單中getpost提交方式的區別

name bsp inpu get div post input 普通 表單 一、form表單中get和post兩種提交方式的區別?   1.get提交表單中的內容在鏈接處是可見的。post不可見   2.post相比於get是安全的   3.post不收限制大小,get有

GETPOST基本請求方法的區別

完整性 總結 優化 返回 們的 傳遞參數 src 本質 大成 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 你可能自己寫過

GETPOST請求方法的區別(RFC翻譯)

  GET和POST方法是HTTP協議規定的。查了HTTP1.1的RFC,原文的專業性極強。下面是白話翻譯,歡迎補充和指錯。   GET方法就是檢索(以實體的形式)由請求uri所指定的資源。如果請求的uri指向資料產生的過程,應該把產生的資料應作為實體在響應中返回而不是源文字,除非原始檔指向輸出過

spring的@Autowired @Resource 註解的區別

      在面試的時候,面試官問我@Autowired 和 @Resource 兩種註解的區別,當時懵逼了,雖然是經常用,但具體區別還真是不知道。然後搜百度記錄下。。。 一、相同點     1. 都是用來裝配 Bean,都可以

HTTP請求協議中GETPOST基本請求方法的區別

GET在瀏覽器回退時是無害的,而POST會再次提交請求。   GET產生的URL地址可以被Bookmark,而POST不可以。   GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。   GET請求只能進行url編碼

HTTP協議中GETPOST基本請求方法的區別

GET和POST兩種基本請求方法的區別 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。   最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。   你可能自己寫過無數個G

在Unity中“Debug.Log”“Print”列印方式的區別

先寫個指令碼“PrintAndDebug”,掛在Main Camera 元件上,在指令碼的 Start 函式裡通過這兩種方式列印一段內容 然後執行u3d,看控制檯列印日誌,如下圖 在這裡可以明瞭的看到Debug.Log是直接打印出來的 而Print是繼承自MonoBehaviour的,

nuxt框架UniversalSparender mode的區別

個人 服務端 博客 有一個 mode title ima -s href 如下圖,官網上對於Universal 和 Spa 兩種render mode的區別,並沒有加以說明,相信大多數人跟我一樣有點懵,不知道選什麽好。雖然兩個模式創建的項目看不出區別。 先給出推薦選項

numpy中a[][][] a[, , ]索引方式的區別

之前一直對a[][][] 和 a[, , ]兩種索引方式的區別不清楚,今天試驗了一下。 根據三個維度分別是:還是數字,共2^3^ =8種情況進行了實驗。 1、a[:][:][:] 與 a[:, :, :](等價於a[:]), a[1][0][2] 與 a[1,

實驗long raw blob資料型別遇到dblink的表現

首先long raw從Oracle 10g開始就不再被建議使用,建議用blob代替。同理,long建議用clob代替。 本文從運維角度實驗long raw 和 blob兩種資料型別在遇到dblink時的一些差異。 1.構造實驗環境 在A庫jingyu使用者下建立兩張表: --LONG RAW create

轉:GETPOST基本請求方法的區別

原文地址:GET和POST兩種基本請求方法的區別 原文如下: GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。   最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。   你可能自己寫過無數

REDIS學習(6)檢視redis狀態,以及rdbaof持久化方案的區別

在控制檯輸入info命令回車可以得到以下的資訊(也可以用 redis clients分別查詢資訊) redis_version:3.2.3伺服器版本 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:78f57

ajax中getpost請求的區別

Ajax(Asynchronous Javascript And XML)即非同步JavaScript和XML,通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新;這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新(即區域性重新整理);而

探究:Mysql資料庫innodbmyisam儲存引擎auto_increment屬性的區別

part1:重啟的影響 為包含表頭和表體的業務物件建立表,要求表頭.fid=表體.fid。有一種常見的思路是通過一個單獨的表設定種子列,通過這個單獨的表獲取表頭和表體需要的fid,獲取之後刪除單獨表的記錄。這裡需要注意了,這個獨立的表必須使用myisam格式,因為innod

多執行緒實現區別-繼承Thread實現Runable

一  前面一種比較簡潔。後面一種更靈活,因為java可以實現多個介面,但是隻能繼承一個類 二  適合於資源的共享 如果不涉及 多執行緒直接資源共享用Thread 比較好,否則實現Runable較好 Thread其實也是實現了Runnable介面  Thread中的start(

解析氣泡排序闡述不同氣泡排序的區別

      今天在學習Javascript的時候有個demo用的是氣泡排序,仔細一看卻覺得有的地方不太對。這好像和我用Java寫的氣泡排序不太一樣啊,看似相同的程式,輸出的結果卻相反。