1. 程式人生 > >tcp、udp connect函式的區別

tcp、udp connect函式的區別

1:UDP中可以使用connect系統呼叫


2:UDP中connect操作與TCP中connect操作有著本質區別。


TCP中呼叫connect會引起三次握手,client與server建立連結.UDP中呼叫connect核心僅僅把對端ip&port記錄下來.


3:UDP中可以多次呼叫connect,TCP只能呼叫一次connect.  


UDP多次呼叫connect有兩種用途:1,指定一個新的ip&port連結. 2,斷開和之前的ip&port的連結.


指定新連結,直接設定connect第二個引數即可.


斷開連結,需要將connect第二個引數中的sin_family設定成 AF_UNSPEC即可. 




4:UDP中使用connect可以提高效率.原因如下:


普通的UDP傳送兩個報文核心做了如下:#1:建立連結#2:傳送報文#3:斷開連結#4:建立連結#5:傳送報文#6:斷開連結


採用connect方式的UDP傳送兩個報文核心如下處理:#1:建立連結#2:傳送報文#3:傳送報文另外一點,  每次傳送報文核心都由可能要做路由查詢.


5:採用connect的UDP傳送接受報文可以呼叫send,write和recv,read操作.當然也可以呼叫sendto,recvfrom.


呼叫sendto的時候第五個引數必須是NULL,第六個引數是0.呼叫recvfrom,recv,read系統呼叫只能獲取到先前connect的ip&port傳送的報文. 





UDP中使用connect的好處:1:會提升效率.前面已經描述了.2:高併發服務中會增加系統穩定性.原因:假設client A 通過非connect的UDP與server B,C通訊.B,C提供相同服務.為了負載均衡,我們讓A與B,C交替通訊.A 與 B通訊IPa:PORTa <----> IPb:PORTb;


A 與 C通訊IPa:PORTa' <---->IPc:PORTc 


假設PORTa 與 PORTa'相同了(在大併發情況下會發生這種情況),那麼就有可能出現A等待B的報文,卻收到了C的報文.導致收報錯誤.解決方法內就是採用connect的UDP通訊方式.在A中建立兩個udp,然後分別connect到B,C.

對一個UDP的套介面多次呼叫connect的情況如何?

  • 連線新的IP和埠
  • 斷開前面的連線

第一個目的不同於TCP連線connect的使用:對於TCP連線,connect只能呼叫一次;針對UDP則可以connect到不同的server,eg:client需要和多個伺服器同時通訊。

第二個目的為了斷開一個已連線的UDP連線,再次呼叫connect時,把套接字地址結構的地址簇成員(IPv4為sin_family,IPv6為sin6_family),設定為AF_UNSPEC即可。

效能:當程序知道自己要給同一個目的地址傳送多個數據報時,顯式連線套接字效率更高。

而臨時連線未連線的UDP套接字大約會消耗每個UDP傳輸三分之一的開銷。


相關推薦

tcpudp connect函式區別

1:UDP中可以使用connect系統呼叫2:UDP中connect操作與TCP中connect操作有著本質區別。TCP中呼叫connect會引起三次握手,client與server建立連結.UDP中呼叫connect核心僅僅把對端ip&port記錄下來.3:UDP中

TCPUDP 協議的區別

UDP 在傳送資料之前不需要先建立連線,遠地主機在收到 UDP 報文後,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 確是一種最有效的工作方式(一般用於即時通訊),比如: QQ 語音、 QQ 視訊 、直播等等 TCP 提供面向連線的

TCPUDPHTTPSOCKET之間的區別

安全 其他 出錯 tcp、udp 應用程序 網絡層 傳輸協議 客戶端 連接 IP:網絡層協議; TCP和UDP:傳輸層協議; HTTP:應用層協議; SOCKET:TCP/IP網絡的API。 TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。 TCP和UDP使用IP

HTTPTCPUDP區別

校驗 順序 滑動 工作 標識 發送 重傳 丟包 tcp TCP、UDP的區別 1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接 2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;U

常見通訊協議區別——tcpudprpchttpsocket

TCP/IP TCP/IP協議是一個協議簇。裡面包括很多協議的。UDP只是其中的一個。之所以命名為TCP/IP協議,因為TCP,IP協議是兩個很重要的協議,就用他兩命名了。 tcp和udp

TCPUDPHTTP的區別

一.TCP/IP代表傳輸控制協議/網際協議,指的是一系列協組。   可分為四個層次:資料鏈路層、網路層、傳輸層和應用層。 在網路層:有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層:中有TCP協議與UDP協議。 在應用層:有FTP、HTTP、

HTTPTCPUDPSocketHttps區別

TCP HTTP UDP三者的關係如下:  TCP / IP是個協議組,可分為四個層次:網路介面層,網路層,傳輸層,應用層  在網路層有IP協議,ICMP協議,ARP協議,RARP協議和BOOTP協議。  在傳輸層中有TCP協議與UDP協議。 &n

深入理解TCPUDP協議及兩者的區別

一、TCP協議: 位於傳輸層, 提供可靠的位元組流服務。所謂的位元組流服務(Byte Stream Service) 是指, 為了方便傳輸, 將大塊資料分割成以報文段(segment) 為單位的資料包進行管理。 而可靠的傳輸服務是指, 能夠把資料準確可靠地傳給對方。 即TC

簡述TCPUDP區別及各自優缺點

1、UDP UDP是面向無連線的通訊協議,UDP資料包括目的埠號和源埠號資訊 優點: UDP速度快,操作簡單,要求系統資源較少,由於通訊不需要連線 可實現廣播發送 缺點: UDP傳送資料前並不與對方簡歷連線,對接收到的資料也不傳送確認訊號,傳送端不知道資料是否會正確接收,也不重複傳送,不

TCPUDPHTTPSOCKETWebSocket之間的區別

TCP/IP協議棧主要分為四層:應用層、傳輸層、網路層、資料鏈路層, 每層都有相應的協議,如下圖 IP: 網路層協議;(高速公路) TCP和UDP: 傳輸層協議;(卡車) HTTP: 應用層協議;(貨物)。HTTP(超文字傳輸協議)

TCPUDP區別及OSI與TCP/IP參考模型

TCP、UDP是什麼? TCP-傳輸控制協議(TransmissionControl Protocol) 工作在計算機網路OSI模型的傳輸層,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。 可靠性體現在TCP通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗

TCPUDPHttpXmpp 的區別和聯絡

一:TCP、UDP、Http、Xmpp的區別    下面是自己的理解,如有不正確之處,請指正。 (1)TCP、UDP是資料傳輸方式   1.1 採用TCP傳輸資料需要和伺服器建立連線,完成三次握手,

最簡單的TCPUDP案例及各函式的詳細解釋

TCP: server #include "stdafx.h" #include<iostream> #define BUF_SZIE 64 #include "winsock2.h" #pragma comment(lib, "ws2_32.lib")

TCPUDP和HTTP

ng- net 可靠性 itl 簡單的 spa 圖片 版本號 mage 先來一個講TCP、UDP和HTTP關系的 1、TCP/IP是個協議組,可分為三個層次:網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層

第二章 傳輸層:TCPUDP和SCTP

發送 主機 溢出 封裝 首部 序列號 設計 sig 錯誤 //1. IPv4 : 網際協議版本4。使用32位地址。IPv4給TCP、UDP、SCTP、ICMP、IGMP提供分組遞送服務。 IPv6 : 網際協議版本6。使用128位地址。IPv6給TCP、UDP、SCTP、

TCPUDPIP 協議分析

cin 數值 style width 流量 serve 地址解析 checksum log TCP、UDP、IP 協議分析 http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091145609.shtml http://b

VC++使用socket進行TCPUDP通信實例總結

數據包 面向 類型 cep ip地址 定義 protocol htm blog 1. 兩臺計算機通信需要協議,通信的兩臺計算機IP必須唯一 2. 同一個計算機可以進行多個應用程序與其他計算機通信,IP地址唯一,而端口號是區別同一計算機(同一IP)

Sendip 命令行發包工具,支持IPTCPUDP

blog and 目前 inux logs ddr https prot ack Sendip是一個linux平臺的命令行發數據包工具,目前(2018年2月)支持的協議有ipv4、ipv6、icmp、tcp、udp、bgp、rip、ntp,作者表示其他協議將會後面支持,當他

【網絡編程】InetAddressTCPUDP

數據包 rgs 類方法 AC 連接失敗 length 端端 pan udp InetAddress import java.net.InetAddress; import java.net.UnknownHostException; /* * 表示互聯網中的IP地址

TCP UDP網絡編程作業代寫代寫C 語言 TCP程序 Network Programming using C

java upper single required mission GC recommend may could TCP 、UDP網絡編程作業代寫、代寫C 語言 TCP程序Network Programming using COverview? This homework