再看erlang的socket部分基础
2024-08-24 22:05:49
socket的选项里面的{packet,0}和{packet,raw}的区别
{packet,} erlang处理2字节大端包头
{packet,} erlang处理4字节大端包头
{packet,} erlang不负责拆包,用户自己处理
{packet,raw} erlang不负责拆包,用户自己处理,和{packet,}的区别应该在于raw socket可以处理icmp之类的特殊包
粘包处理
自己处理粘包的时候,使用{active, N}(还没有到被动模式)和{active, true}选项的时候,在handle_info({tcp,Socket,Data}里面需要好好处理下粘包,
具体可以看下面的例子
https://github.com/kqqsysu/ssdb-erlang/blob/master/src/ssdb_conn.erl
关于在被动模式下以recv方式收包
如果是{packet,}或者{packet, raw},需要指定recv的大小,否则会全部收取
如果是{packet,x},x为124,则recv直接传0参数
参考地址
最新文章
- Android JNI总结
- Linux网络编程系列-TCP编程实例
- 精通javascript(看书笔记)
- 数据传输:JSON,XML
- 黑马程序员——JAVA基础之简述集合collection
- Python刷票小脚本——网络人气奖?不好意思,我要了
- SQL中Merge的用法
- VB与报表的交互
- Potato(邪恶土豆)–windows全版本猥琐提权
- c# 浮点数计算问题
- Spring Cloud Alibaba基础教程:Nacos的数据持久化
- Haskell语言学习笔记(93)Data.Text
- 高性能Mysql笔记 — 索引
- linux-grep-tail-find
- Android 开发工具方法整理
- Ubuntu java install &; config
- Redis AOF文件
- 4、Android-数据存储方案(使用LitePal操作数据库)
- CF540 D 概率 DP
- Java进阶SQL函数、网页定时刷新与自定义JSTL函数