套接字 资料查阅

(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.mzph.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…