1. 程式人生 > >socket函式詳解 (有了新的認識)

socket函式詳解 (有了新的認識)

       我們先來看一下socket函式的原型:

SOCKET PASCAL FAR socket (int af, int type, int protocol);

      典型的呼叫方式為:

 unsigned int sockSrv = socket(AF_INET, SOCK_STREAM, 0);
     

      1.af是address family的縮寫,實際上就是指明域domain, 這個af主要是用來區分是建立ipv4的套接字還是ipv6的套接字。   當然, 順便說一下, 如果是在unix中, 第一個引數還可以是AF_UNIX, 表示這個socket既不是ipv4的socket, 也不是ipv6的socket, 而是非網路形式的unix域socket, 可以用來進行非網路形式的程序間通訊。 在很多嵌入式系統中, 程序間的通訊均是通過非網路形式的unix域套接字來完成的。不過, 我們要明白, unix域套接字的客戶端和服務端進行通訊時, 客戶端和服務端必須位於同一臺機器上, 而且效率比網路套接字更高。

     2. 我以前總是以為, 這個type值決定了是tcp套接字還是udp套接字, 其實不是的。 type值決定的是流套接字還是資料報套接字或者其他。 注意流套接字不一定是tcp, 資料報套接字也不一定是udp.

     3. protocol這個值通常為0, 為0的時候是什麼意思呢? 意思是, 如果type是流套接字, 且protocol為0, 那麼就是就是預設的流套接字---tcp套接字。 同理, 如果type是資料報套接字, 且protocol為0, 那麼就是預設的資料報套接字---udp套接字。

      返回值其實就是一個無符號整形,用於標識和索引套接字。可以通過返回值判斷套接字是否建立成功。

相關推薦

socket函式 認識

       我們先來看一下socket函式的原型: SOCKET PASCAL FAR socket (int af, int type, int protocol);       典型的呼叫方式為:  unsigned int sockSrv = socket(AF_I

STM32庫函式----通用輸入/輸出GPIO

初始化和配置相關函式 1.void  GPIO_DeInit  (GPIO_TypeDef* GPIOx) 函式解釋:gpio的反初始化函式,該函式的作用是把GPIO相關的暫存器配置成上電覆位後的預設狀態,在第一次初始化前或者不在使用某一介面後,可以呼叫該函式。 引數

內部類含java8特性

內部類的作用: 提供很好的封裝,不允許同一個包中的其他類訪問! 內部類成員能直接訪問外部類的私有資料 匿名內部類適用於建立僅僅需要使用一次的類 內部類分類: 非靜態內部類 靜態內部類(類內部類) 成員內部類 匿名內部類 非靜態內部類注意事

malloc和free函式轉載只是為了查閱方便,若侵權立刪

malloc和free函式詳解   本文介紹malloc和free函式的內容。   在C中,對記憶體的管理是相當重要。下面開始介紹這兩個函式:     一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(lon

ROW_NUMBER() OVER()函式用法 分組排序 例子多

語法格式:row_number() over(partition by 分組列 order by 排序列 desc) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 wher

ajax error 函式jquery

文章來自:原始碼線上https://www.shengli.me/jquery/186.html error函式 返回的引數有三個: 1.5版本以後返回的是jqXHR物件,該物件不僅包括XMLHttpRequest物件,還包含其他更多詳細屬性和資訊:   這裡主

java類的幾種關係程式碼、類圖

前言 知道類的幾種關係也是程式設計的基礎知識,通常我們在軟體設計、架構設計、開發中都需要使用的, 類的關係 一般情況下類的關係分為6種,分別是實現、繼承、依賴、關聯、聚合、組合,下面將這6中關係簡單的分類 (1)is a -->繼承、實現 (2)has a-->關聯、

python 學習彙總27:itertools函式 tcy

itertools函式 2018/11/14 2.1.建立新iter: count(start=0, step=1)#無限迴圈數;按Ctrl + C退出 # 返回均勻間隔值無限流;通常用作map()生成連續資料點的引數。此外,用於zip()新增序列號 g = itertools.count

STM32庫函式----外部中斷/事件控制器 EXTI

1.void EXTI_DeInit  (void) 函式解釋:將EXTI外設暫存器重置為默註釋。RCC_APB2PeriphResetCmd引數中沒有EXTI外設的的巨集,該外設重置採取的是直接向暫存器賦預設值的操作。 例子:EXTI_DeInit ( );  

pthread_create函式向執行緒函式傳遞引數

一、pthread_create函式: 1、簡介:pthread_create是UNIX環境建立執行緒的函式 2、標頭檔案:#include <pthread.h> 3、函式宣告: int pthread_create(pthread_t* restric

oracle的Instr函式轉載

1)instr()函式的格式  (俗稱:字元查詢函式) 格式一:instr( string1, string2 )    /   instr(源字串, 目標字串) 格式二:instr( string1, string2 [, start_po

java常用集合類例子,集合類糊塗的來看!

TreeSet:TreeSet是依靠TreeMap來實現的.TreeSet是一個有序集合,TreeSet中元素將按照升序排列,預設是按照自然排序進行排列,意味著TreeSet中元素要實現Comparable介面.我們可以在構造TreeSet物件時,傳遞實現了Comparator介面的比較器物件.java.ut

AVL樹插入刪除演算法 -- C++語言實現

一:AVL樹介紹 AVL樹本質上還是一棵二叉搜尋樹,它的特點是: 1.本身首先是一棵二叉搜尋樹。 2.帶有平衡條件:每個結點的左右子樹的高度之差的絕對值(平衡因子)最多為1。在本文中用分別用-1,0,1定義左邊樹高,等高,右邊樹高。平衡因子用m_bf表示。 也就是說,AV

linux中fork函式原創!!例項講解

    所以打印出結果:    0 parent 2043 3224 3225    0 child  3224 3225    0    第二步:假設父程序p3224先執行,當進入下一個迴圈時,i=1,接著執行fork,系統中又新增一個程序p3226,對於此時的父程序,p2043->p3224(當前程

深度學習優化函式5-- Nesterov accelerated gradient (NAG)

深度學習優化函式詳解系列目錄 上一篇文章講解了猶如小球自動滾動下山的動量法(momentum)這篇文章將介紹一種更加“聰明”的滾動下山的方式。動量法每下降一步都是由前面下降方向的一個累積和當前點的梯度方向組合而成。於是一位大神(Nesterov)就開始思考,

C++繼承之二——派生類成員函式函式隱藏、建構函式與相容覆蓋規則

  在這一篇文章開始之前,我先解決一個問題。   在上一篇C++繼承詳解之一——初探繼承中,我提到了在派生類中可以定義一個與基類成員函式同名的函式,這樣派生類中的函式就會覆蓋掉基類的成員函式。   在譚浩強的C++程式設計這本書第十一章,351頁最下面有這麼

C++常物件,常變數,長成員函式

用const修飾的宣告資料成員稱為常資料成員用const修飾的宣告成員函式稱為常成員函式用const修飾的定義物件稱為常物件 變數或物件被const修飾後其值不能被更新。因此被const修飾的變數或物件必須要進行初始化。(一)用const修飾的宣告資料成員稱為常資料成員

Opencv249和Opencv3.0以上的 SolvePnp函式附帶程式、算例

最近要做一個演算法,用到了位姿估計。位姿估計的使用範圍非常廣泛。主要解決的問題為:在給出2D-3D若干點對以及相片的內參資訊,如何求得相機中心在世界座標系下的座標以及相機的方向(旋轉矩陣)。為此筆者做了大量研究,看了許多主流的文章,也是用了許多相關的函式庫。主要有OpenM

C++常物件,常變數,常成員函式含新增內容

 既要使資料能在一定範圍內共享,又要保證它不被任意修改,可使用const。 ·        用const修飾的宣告資料成員稱為常資料成員 ·        用const修飾的宣告成員函式稱為常成員函式 ·        用const修飾的定義物件稱為常物件 變數或物件被c

C++ 中malloc函式轉載

一、原型:extern void *malloc(unsigned int num_bytes); 標頭檔案:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 與 malloc.h