什么是黏包问题: 首先黏包问题只会在基于TCP协议的socket编程中出现,出现的原因是:由于TCP是字节流协议,客户端在接受服务短发来的数据时,会把数据组织成数据流接收。若客户端的socket对象调用的recv(size)方法中的size值大于或小于服务端发送的数据的长度,都会使多个数据包合成一个 ...
分类:
其他好文 时间:
2017-12-03 20:00:57
阅读次数:
216
使用阻塞式Socket API实现自定义的应用层协议,了解Socket编程时的一些坑点,并在开发时合理的解决或避开这些坑,比如解决半包粘包、心跳机制等。讲一下我在用同步socket实现我们公司第一版分布式文件系统时总结的经验。我们针对每一步套路进行构思设计,充分考虑其中潜在的问题和可扩展性。 ...
分类:
其他好文 时间:
2017-12-01 16:42:24
阅读次数:
383
要点: 1、粘包现象 粘包就是在获取数据时,出现数据的内容不是本应该接收的数据,如:对方第一次发送hello,第二次发送world,我放接收时,应该收两次,一次是hello,一次是world,但事实上是一次收到helloworld,一次收到空,这种现象叫粘包 只有TCP有粘包现象,TCP协议是面向流 ...
分类:
其他好文 时间:
2017-11-28 16:47:35
阅读次数:
135
本篇内容:1.解决socket粘包问题2.通过socket传输大数据3.socketserver的使用一、解决socket粘包问题1.粘包现象怎么出现的粘包是通过socket传输数据时不可避免的问题,也是我们要注意的问题。当上次发送的数据和本次发送的数据是通过一次发送动作发送出去的,这样就出现了粘包..
分类:
编程语言 时间:
2017-11-20 15:44:57
阅读次数:
274
一、基于udp的套接字 udp是无链接的,先启动哪一端都不会报错 udp服务端: udp客户端: 1、udp套接字简单实例 服务端: 客户端: 2、模拟聊天(由于udp无连接,所以可以同时多个客户端去跟服务端通信) 服务端: 客户端1: 客户端2: 二、粘包现象 先做粘包现象: 服务端: 客户端: ...
分类:
其他好文 时间:
2017-11-14 14:51:29
阅读次数:
176
socket : 解决粘包 并发编程 生产者消费者模型 进程池和线程池 回调函数 GIL全局解释器锁(理论) 单线程下实现并发 : 协程,IO模型 MySQL : 设计表 : 多对多,多对一,一对一 pymysql 基于设计好的表,进行相关查询 ...
分类:
数据库 时间:
2017-11-14 14:40:17
阅读次数:
195
一、粘包优化方案 之前我们解决粘包的方式是用struct模块来制作一个报头,但是这个解决的方案是有漏洞的,当我们需要传送的文件大于2g时将会报错。所以我们今天将用json来制作报头。 from socket import * import subprocess import struct impor ...
分类:
系统相关 时间:
2017-11-14 14:14:55
阅读次数:
197
一.socket介绍 1.socket在tcp/ip五层结构中的位置 socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket ...
分类:
其他好文 时间:
2017-11-11 13:14:37
阅读次数:
180
netty通讯需要对数据进行编码,解码,于是我们需要用到netty的编码器、解码器 netty 提供的解码器 DelimiterBasedFrameDecoder 解决TCP的粘包解码器 StringDecoder 消息转成String解码器 LineBasedFrameDecoder 自动完成标识 ...
分类:
Web程序 时间:
2017-11-10 12:46:38
阅读次数:
539
CONN_BUFFER g_ConnBuffer[MAX_CONN_COUNT]; 所有的socketfd都放入g_ConnBuffer中,其中used标志其可用状态,read此fd前要检查之。 tail指向数据尾部,当处理完一个数据包,将包的最后位置到tail的数据拷贝到前面;与下次收到的包组合。 ...
分类:
其他好文 时间:
2017-11-07 01:29:59
阅读次数:
123