1. 流式套接字采用字节流方式进行传输,而数据报套接字 使用数据报形式传输数据2. tcp套接字会产生粘包,udp有消息边界,不会形成粘包.3. tcp编程可以保证消息的完整性,udp则不能保证4. tcp需要listen accept,udp不用5. tcp消息的发送接收使用recv send sendall,udp使用 recvfrom,sendto…
所有的书上都说, tcp是流式传输, 这是什么意思? 假设A给B通过TCP发了200字节, 然后又发了300字节, 此时B调用recv(设置预期接受1000个字节), 那么请问B实际接受到多少字节?  根据我们之前讲得tcp粘包特性,可知, B端调用一次recv, 接受到的是500字节. 所谓流式传输, 说白了, 就是管道中的水, 第一次给你发了200斤的水, 第二次给你发了300斤的水, 然后你在对端取的时候, 这200斤和300斤的水, 已经粘在一起了, 无法直接分割, 没有界限了. 所有的…
TCP 基于流的协议 又叫可靠性传输协议 通过三次握手 四次挥手 来保证数据传输完毕 缺点效率低 正因为是基于流的协议 所以会出现粘包问题粘包问题:原因一:是应为数据是先发送给操作系统,在操作系统中有一个缓冲池 ,操作系统并不会马上把数据发送给服务器端的缓冲池,而是在自己的缓冲池中, 操作系统会将数据小,发送间隔短的数据进行底层优化,然后一起发送出去就造成了数据的混合,以至于到了服务器哪里的缓冲池也区分不出来,造成的粘包 原因二,数据发到服务器的缓冲池中,服务器没有及时发送给应用软件接收,造成了…
阿里专家强琦:流式计算的系统设计和实现 更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 阿里云数据事业部强琦为大家带来题为“流式计算的系统设计与实现”的演讲,本文主要从增量计算和流式计算开始谈起,然后讲解了与批量计算的区别,重点对典型系统技术概要进行了分析,包括Storm.Kinesis.MillWheel,接着介绍了核心技术.消息机制以及StreamSQL等,一起来了解下吧. 增量计算和流式计算 流式计算 流计算对于时效性要求比较严格,实时计算就是对计算…
一.套接字(socket) 1.英语单词socket:n.插座:穴:v.插入插座 2.套接字就是源IP地址和目的IP地址.源端口号和目的端口号的组合,是通过传输层进行通信的.IP指定电脑,端口指定某一具体APP. 3.套接字类型: 流式:SOCK_STREAM,基于TCP: 数据报式:SOCK_DGRAM,基于UDP: 原始式:SOCK_RAW. 二.UDP通信实例 1.综述 UDP貌似可以不区分服务端和客户端,因为代码是一样的,服务端可发可收,客户端亦可发可收. 发送端要先建立套接字,然后设置…
socket 基于tcp协议socket 服务端 import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 买电话 # socket.SOCK_STREAM 流式协议 就是TCP协议 phone.bind(('127.0.0.1', 8080)) # 买电话卡 phone.listen(5) # 开机. # 5 不是链接数,链接可以产生N个,同一时刻只能监听5个请求. conn, addr = phone.…
一.TCP套接字 1.low版tcp套接字 服务器端 客户端 2.改进版tcp套接字 服务端 客户端 二.UDP的套接字 服务器 客户端 注:udp的套接字可以支持多个客户端同时访问,但tcp套接字就不行了,那是因为tcp套接字有tcp三次握手四次挥手. 三.recv和recvfrom的区别? 1.提前须知: 1.1tcp是send发送消息,recv接收消息. 1.2udp是sendto发送消息,recvfrom接收消息. 1.3 在我眼里看来send只是发送一个数据对象,所以recv接收的也只…
1.流式套接字 使用这种套接字时,数据在客户端是顺序发送的,并且到达的顺序是一致的.比如你在客户端先发送1,再发送2,那么在服务器端的接收顺序是先接收到1,再接收到2,流式套接字是可靠的,是面向连接的: 2.数据报套接字 这种套接字是无连接的,数据是打包成数据包发送的,到达的顺序不一定与发送的顺序是一致的,并且数据不一定是可达的,并且接收到的数据还可能出错. 既然这样那为什么还要使用这种套接字呢?因为现每个使用udp的程序都有自己的对数据进行确认的协议.如TFTP协议规定了每收到一个消息比如,…
Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一 般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. socket()函数原型: int socket(int domain, int type, int protocol); 参数说明:…
一.基于UDP的套接字 UDP服务端 ss = socket() #创建一个服务器的套接字 ss.bind() #绑定服务器套接字 inf_loop: #服务器无限循环 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) ss.close() # 关闭服务器套接字 UDP客户端 cs = socket() # 创建客户套接字 comm_loop: # 通讯循环 cs.sendto()/cs.recvfrom() # 对话(发送/接收) cs.close() #…