1. 程式人生 > >TCP/IP協議: connect的系統超時控制

TCP/IP協議: connect的系統超時控制

程式先把socket設定成非阻塞,connect在非阻塞模式下會立刻返回,如果沒有其他錯誤,返回值等於0。當connect不能立刻建立連線時,會返回一個EINPROGRESS,表示連線正在建立的過程中,這時我們可以使用select去輪詢套介面,而select的輪詢超時時間可以根據自己的需要去設定,最主要的是輪詢的集合一定要是讀和寫的集合,即select的第二和第三個引數要賦值,待select返回就可以去判斷返回值來確定connect的程序狀態了。如果返回值小於0,說明connect的程序出現了錯誤,如果是等於0則說明connect超時,如果等於1,並且套介面此時的狀態是可寫,則說明了connect已經成功建立;(
設定等待時間,使用select函式等待正在後臺連線的connect函式,這裡需要說明的是使用select監聽socket描述符是否可讀或者可寫,如果只可寫,說明連線成功,可以進行下面的操作。如果描述符既可讀又可寫,分為兩種情況,第一種情況是socket連接出現錯誤(不要問為什麼,這是系統規定的,可讀可寫時候有可能是connect連線成功後遠端主機斷開了連線close(socket)),第二種情況是connect連線成功,socket讀緩衝區得到了遠端主機發送的資料。需要通過connect連線後返回給errno的值來進行判定,或者通過呼叫 getsockopt(sockfd,SOL_SOCKET,SO_ERROR,&error,&len); 函式返回值來判斷是否發生錯誤)
其他情況的話就算是其他錯誤吧,至此,我們只需要設定select的超時值就可以隨心所欲地實現自己想要的connect連線超時了。

相關推薦

TCP/IP協議 connect系統超時控制

程式先把socket設定成非阻塞,connect在非阻塞模式下會立刻返回,如果沒有其他錯誤,返回值等於0。當connect不能立刻建立連線時,會返回一個EINPROGRESS,表示連線正在建立的過程中,這時我們可以使用select去輪詢套介面,而select的輪詢超時時間可以根據自己的需要去設定,最主要的是

TCP/IP協議最大傳輸單元MTU 和 最大分段大小MSS (TCP的分段和IP的分片)

MTU = MSS + TCP Header + IP Header. mtu是網路傳輸最大報文包。 mss是網路傳輸資料最大值。 MTU:maximum transmission unit,最大傳輸單元,由硬體規定,如乙太網的MTU為1500位元組。 MS

TCP/IP協議資料鏈路層協議

資料鏈路層的協議定義了通過同種通訊媒介互連的裝置之間的傳輸的規範。 物理層:把物理訊號與二進位制的01進行相互轉換。 資料鏈路層:把01序列組織為一個叫做幀的塊,再進行傳輸。 各種資料鏈路 乙太網 WLAN(無線區域網) PPP(點對點協議)

TCP/IP協議族》TCP的流量控制和擁塞控制

1.流量控制  所謂的流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接受。利用滑動視窗機制可以很方便的在TCP連線上實現對傳送方的流量控制。TCP的視窗單位是位元組,不是報文段,傳送方的傳送視窗不能超過接收方給出的接收視窗的數值。 如圖所示,

TCP/IP協議(2)網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、

MQTT是IBM開發的一個即時通訊協議,構建於TCP/IP協議上,是物聯網IoT的訂閱協議,借助消息推送功能,可以更好地實現遠程控制

集合 cap 消息處理 簡易 遠程控制 mes ogr 設計思想 成本 最近一直做物聯網方面的開發,以下內容關於使用MQTT過程中遇到問題的記錄以及需要掌握的機制原理,主要講解理論。 背景 MQTT是IBM開發的一個即時通訊協議。MQTT構建於TCP/IP協議上

熟悉 TCP/IP 協議

所有 原本 icmp 分配 破壞 流動 保存 似的 而是 一篇文章帶你熟悉 TCP/IP 協議(網絡協議篇二) 同樣的,本文篇幅也比較長,先來一張思維導圖,帶大家過一遍。 一圖看完本文 一、 計算機網絡體系結構分層 計算機網絡體系結構分層計算機網絡體系結構分層不難看

002每天五分鐘入門TCP/IP協議IP協議IP首部長度問題

IP 首部 首部長度 事出反常必有妖,邪乎到家必有鬼。 整個TCP/IP協議中,IP協議是最核心的協議。 IP協議是不可靠的、無連接的服務。 何為不可靠?不能保證IP數據報能夠成功到達目的地,傳輸的可靠×××給傳輸層或應用層去實現。 何為無連接?IP並不維護任何關於後續數據報的狀態信息。 進入正題

003每天五分鐘入門TCP/IP協議IP協議之TOS字段說明

IP首部 ToS服務類型 從IP首部看ToS的位置:ToS即為服務類型,只有當網絡設備能夠支持(能夠識別IP首部中的ToS字段)識別ToS字段時,這給字段設置才有意義。否則都是空談。 先說具體字段的意義:Tos字段長度為8bit前3bit字段:為優選權子字段,現在已經廢棄,這個字段默認值是000,從w

004每天五分鐘入門TCP/IP協議IP協議之16位總長度字段引出的MTU值問題

IP首部 MTU 數據封裝 要理解MTU以及實際生產環境中的MTU問題,就得搞清楚三個問題:IP數據報包含什麽內容;數據進入協議棧的封裝過程;MTU具體代表含義; 首先要理解一個過程:數據進入協議棧的封裝過程!數據從發送主機發送出去之前,在主機的協議棧中會經歷上述圖中的幾個封裝過程。本次以TCP

TCP/IP協議及配置、檔案系統

TCP/IP協議及配置 • TCP/IP是最廣泛支援的通訊協議集合 – 包括大量Internet應用中的標準協議 – 支援跨網路架構、跨作業系統平臺的通訊 • 主機與主機之間通訊的三個要素 – IP地址(IP address)– 子網掩碼(

Windows網路程式設計(一)TCP/IP協議

概述 這個協議是一個四層協議: 應用層,主要協議有HTTP、FTP等 傳輸層,主要協議有TCP、UDP等 網路層,主要協議有IP等 鏈路層,主要協議有ICMP等 下層中的協議總是為上層中的協議服務的,比如說應用層的HTTP、FTP協議都是基於T

TCP/IP協議--09 DNS域名系統

一臺機器要靠IP地址和MAC地址,其中,MAC地址可以通過ARP協議得到,所以這對使用者是透明的,但是IP地址就不行,無論如何使用者都需要用一個指定的IP來訪問一臺計算機,而IP地址又非常不好記,於是就出現了DNS系統。 DNS系統介紹 DNS的全稱是Domain Name System。它

使用java自造TCP/IP協議使用JPCAP實現資料發包

從本節開始,我們打算使用java把tcp/ip網路協議棧重新實現一遍。這是一個不小的野心,自然也是一個不小的工程,好在前面順利完成了作業系統,編譯器兩門課程的實現,這給了我極大的信心。整個網際網路系統分為三大支柱,分別是作業系統,編譯器,和網路協議,我們完成了前面三者,還剩第三者一直孤懸

TCP/IP協議模型傳輸層(TCP/UDP)

TCP協議主要資訊: (1)TCP頭部資訊。TCP頭部資訊出現在每個TCP報文段中,用於指定通訊的源端埠號,目的端埠號,管理TCP連線,控制兩個方向的資料流。 (2)TCP狀態轉移過程。TCP連線的任意一端都是一個狀態機。在TCP連線從建立到斷開整個過程中,連線

TCP/IP協議原理-TCP超時重傳

Internet實現互聯的關鍵是TCP/IP協議。在Internet內部,計算機之間互相傳送資訊包進行通訊,TCP/IP協議對這種資訊包的傳輸作了具體的規定。 超時重傳是TCP協議保證資料可靠性的另一個重要機制,其原理是在傳送某一個數據以後就開啟一個計時器,在

TCP/IP協議族》IP地址詳解

一、IP地址和MAC地址 1、MAC地址 MAC(Media Access Control,介質訪問控制)地址,或稱為實體地址,也叫硬體地址,用來定義網路裝置的位置,MAC地址是網絡卡出廠時設定的,是固定的(但可以通過在裝置管理器中或登錄檔等方式修改,同一網段內的MAC地址必須唯一)。MAC

TCP/IP協議族》 IP協議為何不可靠

因特網使用的IP協議是無連線的,因此其傳輸是不可靠的。這樣容易使人們感到因特網很不可靠,那為什麼當初不直接把它設計為可靠的?   先打一個比方。郵局寄送的平信很像無連線的IP資料報。每封平信可能走不同的傳送路徑,同時平信也不保證不丟失。當我們發現收信人沒有收到寄出的平信時,去找郵局

TCP/IP協議族》 LAN、WAN、WLAN、VLAN 和 VPN 的區別

區域網(Local Area Network,LAN)  是指在某一區域內由多臺計算機互聯成的計算機組。一般是方圓幾千米以內。區域網可以實現檔案管理、應用軟體共享、印表機共享、工作組內的日程安排、電子郵件和傳真通訊服務等功能。區域網是封閉型的,可以由辦公室內的兩臺計算機組成,也

TCP/IP協議族》TCP/IP協議頭部結構體

  乙太網頭部14 bytes Destination Source Len Data unit + pad FCS (6 bytes)