套接字 資料查閱

(3)套接字(socket)
?????? 一個完整的網絡應用程序包括客戶端和服務器兩個部分。網間通信進程需要由兩個進程組成,并且只能用同一種協議。也就是說,不能在通信的一端使用TCP協議,而另一端則用UDP協議。一個完整的網絡通信需要一個五元組來標識:協議、本地地址、本地端口號、遠端地址、遠端端口號。
?????? 應用層通過傳輸層進行數據通信時,TCP和UDP會遇到同時為多個應用程序進程提供并發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與Tcp,Udp協議交互提供了稱為套接字(socket)的接口。套接字是一個通信終結點,它是Sockets應用程序用來在網絡上發送或接收數據包的對象。套接字具有類型,與正在運行的進程相關聯,并且可以有名稱。使用套接字的應用程序間通信模型如圖所示。

??????? 在網絡上,一個套接字由一個IP地址和一個端口號唯一確定。套接字的地址指該套接字所在計算機的網絡地址,可以為域名或IP地址的形式。同一計算機上可以運行多個網絡應用程序,每個應用程序都有自己的套接字用以進行網絡通信,此時如果只有地址標識套接字,則當一個通信包到達計算機時,將無法確定究竟是哪個應用程序的套接字需要接收此信息。由此增加了端口的概念,以協助區分同一計算機上不同應用程序的套接字。端口用于標識進程,同一計算機上不同的網絡應用程序各有不同的端口,這樣,通過“網絡地址+端口號”的標識方法,便唯一標識了計算機上的應用程序了I,刀。某些端口是專門為公共服務保留的,如FtP:21,httP:80,除非程序是要提供這些服務,否則應避免使用這些端口。一般來說,端口1024以前的端口號都是系統保留的或是作為公共服務的,應盡量選擇大于1024的端口號,以避免沖突。套接字一般分為三種類型:
??????? ①流式套接字(SOCK--STREAM):該類套接字提供了面向連接的、可靠的、數據無錯并且無重復的數據發送服務。而且發送的數據是按順序接收的。所有利用該套接字進行傳遞的數據均被視為連續的字節流的并且無長度限制。這對數據的穩定性、正確性和發送/接受順序要求嚴格的應用十分適用,TCP使用該類接口。
??????? ②數據報式套接字(SOCK--DGRAM):數據報式套接字提供了面向無連接的服務,不提供正確性檢查,也不保證各數據包的發送順序,因此,可能出現數據的重發、丟失等現象,并且接收順序由具體路由決定。然而,與流式套接字相比,使用數據報式套接字對網絡線路占用率較低。在TCP月P協議組中,UDP使用該類套接字。
??????? ③原始套接字(SOCK--R戌w):該套接字一般不會出現在高級網絡接口的現中,因為它是直接針對協議的較低層(如IP、TcP、UDP等)直接訪問的。用于檢驗新的協議實現或訪問現有服務中配置的新設備,使用原始套接字存在絡應用程序的兼容性問題,所以一般不推薦使用原始套接字。
綜合以上所述,由于本系統網絡通信傳輸視頻數據,在傳輸層選用UDP協即選定套接字類型為數據報式套接字,數據報套接字通信流程如下圖所示

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455626.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux mysql安裝_Linux下安裝mysql服務(超詳細)

Mysql數據庫的安裝對于開發者來說,是我們必然會面對的問題,它的安裝過程其實并不復雜,并且網絡上的安裝教程也非常多,但是對于新手來說,各種不同形式的安裝教程,又給新手們帶來了要選擇哪種方式進行安裝的難…

dash 和 bash 切換

#先看看是用的哪個 shellls -al /bin/sh #如果是dash,切換到bashsudo ln -fs /bin/bash /bin/sh轉載于:https://www.cnblogs.com/abolide/p/6874265.html

Django中使用ajax技術概述

ajax 1.什么是ajax ajax就是在不刷新整個頁面的情況下,去更新局部頁面的內容(無刷新技術) 2.ajax有什么優點 最大的一點是頁面無刷新,在頁面內與服務器通信,給用戶的體驗非常好。 使用異步方式與服務器通信&#x…

IE、FF腳本兼容性問題

1.window.event IE有這個對象;FF沒有,FF通過參數傳遞 2.獲取事件源 IE:srcElement FF:target 3.添加與去除事件 IE:element.attachEvent("onclick", function(){}) element.detachEvent("onclick"…

ARM MOV和 LDR指令關系

ARM是RISC結構,數據從內存到CPU之間的移動只能通過L/S指令來完成,也就是ldr/str指令。比如想把數據從內存中某處讀取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678這個地址中的值存放到r0中。而mov不能干這個活…

day2 操作系統

一.為何要有操作系統 程序員無法把所有的硬件操作細節都了解到,管理這些硬件并且加以優化使用是非常繁瑣的工作,這個繁瑣的工作就是操作系統來干的,有了他,程序員就從這些繁瑣的工作中解脫了出來,只需要考慮自己的應用…

Django之model模型

模型 1.如何安裝pymysql 1.file->settings->Project Interpreter 2.點擊右邊的"" 3.搜索pymysql 4.點擊最下面的"install package" 5.安裝成功會提示"Package "pymysql" install successfully"2.如何在django中配置mysql 1.在…

python安裝不了jupyter_python學習筆記——Windowns下Python3之安裝jupyter

Windowns下Python3之安裝jupyter Jupyter notebook: 一個交互式筆記本,支持運行40多種編程語言。 利用它來寫Python,代碼和運行結果都可以保存下載,十分方便。本文主要以自身的安裝過程為例,結合遇到的問題&#xff0c…

Java文件讀寫操作

http://blog.csdn.net/jiangxinyu/article/details/7885518/ 比較齊全,有多種文件讀寫操作轉載于:https://www.cnblogs.com/maowuyu-xb/p/7238170.html

視頻編碼與封裝方式詳解

1. 編碼方式和封裝格式... 1 2. 視頻編碼標準兩大系統... 2 MPEG-1. 2 MPEG-2. 3 MPEG-3. 3 MPEG-4. 3 ITU-T. 4 WMV. 4 3. 常用視頻編碼方式有Xvid( 4 4. 常見存儲封裝格式... 6 5. 幾種常見的轉換格式設置... 7 6. 無損視頻編碼... 9 1. 編碼方式和封裝格式常見…

Binder

問:為什么Android要采用Binder作為IPC機制 答案來自百度知道: (1)從性能的角度數據拷貝次數:Binder數據拷貝只需要一次,而管道、消息隊列、Socket都需要2次,但共享內存方式一次內存拷貝都不需要…

matlab 三維核密度圖_Matlab精彩畫圖示例:三維網狀圖和三維曲面圖

接上篇:Matlab精彩畫圖示例:繪制圖上圖這篇介紹兩個繪制三維圖的命令:mesh - 繪制三維網狀圖surf - 繪制三維曲面圖matlab代碼如下:繪制三維圖的matlab代碼示例程序運行結果如下:mesh(X,Y,Z) draws a wireframe mesh w…

Django之templates模板

模板的使用 1.如何使用模板 在manage.py的同級文件夾中創建templates在setting.py的文件中把第58行DIRS: [ ],改成DIRS: [os.path.join(BASE_DIR,templates)], 知識點: os.path.join(BASE_DIR,templates) 拼接兩個字符串 BASE_DIR找到項目根目錄127.0.0.1:8000/myadmin/templ…

STL容器刪除元素的陷阱

今天看Scott Meyers大師的stl的用法&#xff0c;看到了我前段時間犯的一個錯誤&#xff0c;發現我寫的代碼和他提到錯誤代碼幾乎一模一樣&#xff0c;有關stl容器刪除元素的問題&#xff0c;錯誤的代碼如下&#xff1a;std::vector<struct> mFriendList;...std::vector&l…

JDBC1

1.jdbc的概述 是sun公司統一提供的一套接口規范,各個數據庫生產商提供實現 注冊驅動,獲得連接,獲得執行的SQL語句對象,釋放資源 package com.learn.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;import org.junit.Test;publ…

無符號哥倫布指數編碼

在H264編解碼中&#xff0c;哥倫布指數編碼是經常用到的&#xff0c;下面是無符號哥倫布指數編碼的C代碼&#xff1a; static inline int bs_read_ue( bs_t *s ){ int i 0; while( bs_read1( s ) 0 && s->p < s->p_end && i < 32 ) { …

django后臺多頁面分頁邏輯python代碼

#!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋葉夏風# 本模塊的功能:<>def get_page_list(max_page,curr_page,leng):用于生成頁數列表:param max_page:最大頁數:param curr_page:當前頁數:param leng:分頁步長:return:list# max_page 20# curr_page …

python程序怎么保存到u盤_python實現usb自動拷貝程序的方法

python實現usb自動拷貝程序的方法 發布時間&#xff1a;2020-06-28 09:07:05 來源&#xff1a;億速云 閱讀&#xff1a;135 作者&#xff1a;清晨 這篇文章將為大家詳細講解有關python實現usb自動拷貝程序的方法&#xff0c;小編覺得挺實用的&#xff0c;因此分享給大家做個參考…

young people can also be a leader

2019獨角獸企業重金招聘Python工程師標準>>> The leaders or directors of organizations are often older people. But some people say that young people can also be a leader. To what extent do you agree or disagree? In my view , young people can also …

BZOJ 2004 公交線路(狀壓DP+矩陣快速冪)

注意到每個路線相鄰車站的距離不超過K&#xff0c;也就是說我們可以對連續K個車站的狀態進行狀壓。 然后狀壓DP一下&#xff0c;用矩陣快速冪加速運算即可。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm>#define…