Python Web学习笔记之SOCK_STREAM和SOCK_DGRAM

SOCK_STREAM

  1. 数据流
  2. 一般是tcp/ip协议的编程
  3. 有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送

SOCK_DGRAM

  1. 数据包
  2. udp协议网络编程
  3. 是无保障的面向消息的socket , 主要用于在网络上发广播信息。

关于UDP

  1. UDP协议适用端口分别运行在同一台设备上的多个应用程序,UDP不提供数据报分组、组装和不能对数据包进行排序的缺点。也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
  2. 在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。
  3. 由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频视频普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

关于TCP

  1. 面向连接的传输;
  2. 端到端的通信;
  3. 高可靠性,确保传输数据的正确性,不出现丢失或乱序;
  4. 全双工方式传输;
  5. 采用字节流方式,即以字节为

SOCK_STREAM

是有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送。

SOCK_DGRAM

是无保障的面向消息的socket,主要用于在网络上发广播信息。


SOCK_STREAM是基于TCP的,数据传输比较有保障

SOCK_STREAM 是数据流,一般是tcp/ip协议的编程

SOCK_DGRAM分是数据抱,是udp协议网络编程

SOCK_DGRAM是基于UDP的,专门用于局域网,基于广播


新套接口的类型描述类型,如TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)。

常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。

指定协议。套接口所用的协议。如调用者不想指定,可用0。

常用的协议有,IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等

它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。

SOCK_STREAM 提供有序的、可靠的、双向的和基于连接的字节流,使用带外数据传送机制,为Internet地址族使用TCP。

SOCK_DGRAM 支持无连接的、不可靠的和使用固定大小(通常很小)缓冲区的数据报服务,为Internet地址族使用UDP。

SOCK_STREAM类型的套接口为全双向的字节流。

对于流类套接口,在接收或发送数据前必需处于已连接状态。

用connect()调用建立与另一套接口的连接

连接成功后,即可用send()和recv()传送数据。当会话结束后,调用closesocket()。

带外数据根据规定用send()和recv()来接收。

实现SOCK_STREAM类型套接口的通讯协议保证数据不会丢失也不会重复。

如果终端协议有缓冲区空间,且数据不能在一定时间成功发送,则认为连接中断,其后续的调用也将以WSAETIMEOUT错误返回。

SOCK_DGRAM类型套接口允许使用sendto()和recvfrom()从任意端口发送或接收数据报。

如果这样一个套接口用connect()与一个指定端口连接,则可用send()和recv()与该端口进行数据报的发送与接收。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

使用GitBook写电子书

工作以来一直有写博客的习惯,除了在各大站长写博客外,还可以使用 gitbook 将博客整理成电子书出版,如果受到好评还可以将图书弄成电子版出版。 经过近半年的整...

32070
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端

由于手头目前用项目, 所以与前几篇文章不同, 这次要讲的js客户端这部分是通过我刚刚开发的真是项目的代码来讲解的. 这是后端的代码: https://githu...

63150
来自专栏Golang语言社区

【Go 语言社区】单点redis 持久化在高并发下存在延迟情况

最近的服务器设计中,我本来打算利用redis的持久化来作为内存的配置数据源,简单的说就是不利用内存儿利用redis 提供的API来作为数据的读和写。...

40970
来自专栏Seebug漏洞平台

使用 XML 内部实体绕过 Chrome 和 IE 的 XSS 过滤器

来源:BypassingXSSFiltersusingXMLInternalEntities 原作者:DavidLitchfield (david@davidl...

422100
来自专栏散尽浮华

Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明

NamedManager 是一个基于Web的DNS管理系统,可用来添加、调整和删除DNS的zones/records数据。它使用Bind作为底层DNS服务,提供...

1.3K80
来自专栏Golang语言社区

Linux下socket双向通信

linux下的socket与windows下的类似,就是少一个初始化的过程。 服务端 客户端 1 创建socke...

43880
来自专栏沈唁志

PHP开发规范之使用phpcbf脚本自动修正代码格式

在前段时间的文章:在PhpStorm中安装使用PHP_CodeSniffer编码规范检查工具中提到过phpcbf脚本

30810
来自专栏乐沙弥的世界

配置共享服务器模式

两者完成相同的任务,即处理所有指定的SQL操作。假定从客户端提交一个任意查询(DQL)到数据库服务器不论是专用模式还是共享

29330
来自专栏高性能服务器开发

Linux网络编程“惊群”问题总结

1、前言   我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬。如今计算机都是多核了...

43360
来自专栏CaiRui

LAMP=Linux+Apache+Mysql+Php

一、当前互联网主流web服务 静态服务: 1.apache---中小型静态web服务的主流,web服务器中的老大哥 2.nginx---大型新型网络静态web服...

316100

扫码关注云+社区

领取腾讯云代金券