推送系统 一、系统设计 二、拆包和粘包 粘包、拆包表现形式 现在假设客户端向服务端连续发送了两个数据包,用packet1和packet2来表示,那么服务端收到的数据可以分为三种,现列举如下: 第一种情况,接收端正常收到两个数据包,即没有发生拆包和粘包的现象,此种情况不在本文的讨论范围内。 第二种情况 ...
分类:
编程语言 时间:
2019-09-16 19:46:43
阅读次数:
118
什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1。可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原理 应用程序所看到的数据是一个整体,或者说是一个流(stream),一条消息有多少字节对应用程序是不可见 ...
分类:
其他好文 时间:
2019-09-14 19:05:06
阅读次数:
91
解决粘包问题 一、解决粘包问题方式一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死循环接收完所有数据。 1.1 服务器 1.2 客户端 缺点: 程序的运行速度远快于网络传输 ...
分类:
其他好文 时间:
2019-09-13 17:28:04
阅读次数:
207686
基于UDP协议的socket套接字编程 一、UDP套接字简单示例 1.1 服务器 1.2 k客户端 UDP是无链接的,先启动哪一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 二、UDP套接字无粘包问题 2.1服务器 2.2 客户端 UPD协议一般不用 ...
分类:
其他好文 时间:
2019-09-13 17:27:42
阅读次数:
102
粘包问题 一、什么是粘包 注意:只有TCP有粘包现象,UDP永远不会粘包,为何,且听我娓娓道来。 首先需要掌握一个socket收发消息的原理 [ 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用 ...
分类:
其他好文 时间:
2019-09-13 17:14:03
阅读次数:
104
如今,我们想要开发一个网络应用,那是相当地方便。不过就是引入一个框架,然后设置些参数,然后写写业务代码就搞定了。 写业务代码自然很重要,但是你知道: 你的数据是怎么来的吗?通过网络传输过来的呗。 你知道网络是通过什么方式传输过来的吗?光纤呗,TCP/IP协议呗。 看起来都难不住我们的同学们,但是,以 ...
分类:
Web程序 时间:
2019-09-12 23:14:12
阅读次数:
425
[TOC] 一、基于UDP协议的socket套接字编程 socket套接字包括使用TCP协议和UDP协议进行通讯 1.1 用法 socket指定使用UDP通讯协议 发送udp数据 接收udp数据 1.2 udp协议的特点 1. 可以发空数据(数据报协议,有头) 2. 不需要建连接 3. 不会粘包 4 ...
分类:
其他好文 时间:
2019-09-11 19:59:21
阅读次数:
101
[TOC] 一、什么是粘包 粘包问题是所有语言中都会有的问题,因为只要使用了TCP协议,即使是通过socket编程也都会产生的问题。 注意:只有TCP有粘包现象,UDP永远不会粘包,为何,且听我娓娓道来。 首先需要掌握一个socket收发消息的原理 发送端可以是一K一K地发送数据,而接收端的应用程序 ...
分类:
其他好文 时间:
2019-09-11 19:49:30
阅读次数:
83
一、socket的基本概念 1.1socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符 ...
分类:
其他好文 时间:
2019-09-11 15:37:21
阅读次数:
92
简易版客户端服务端交互 常识 AF_UNIX 是基于文件类型的套接字家族 AF_INET是 基础网络类型的套接字家族 socket 模块属性很多,可以直接使用from module import 语句 ,这样socket所有的数据都被带劲命名空间里了. 减少代码量(少用) 服务端 客户端 基础知识混 ...
分类:
其他好文 时间:
2019-09-10 23:27:25
阅读次数:
95