当前位置: 首页 > wzjs >正文

在线考试网站开发报价友情链接怎么交换

在线考试网站开发报价,友情链接怎么交换,网站建设推广ppt模板,上海网站推广公司“粘包”现象是指 多个数据包的内容被合并在一起,一次性被接收端读取了,从而造成接收方难以区分包与包的边界。 简而言之:粘包 = 同时收到两个或多个包的内容了。 更详细解释: 粘包常出现在 TCP协议 中,原因是: TCP 是面向字节流的协议,没有消息边界的概念; 如果发送…

“粘包”现象是指 多个数据包的内容被合并在一起,一次性被接收端读取了,从而造成接收方难以区分包与包的边界。

简而言之:粘包 = 同时收到两个或多个包的内容了。


更详细解释:

粘包常出现在 TCP协议 中,原因是:

  • TCP 是面向字节流的协议,没有消息边界的概念;

  • 如果发送端连续发送多个小数据包,TCP 可能会将它们合并为一个较大的包发送出去;

  • 接收端读取时就会一次性读到多个包的内容,而不是一个一个独立的包。


举个例子:

假设发送端连续发送了两个数据包:

包1: Hello 包2: World

粘包时,接收端可能一次 recv() 就读到:

HelloWorld


对比一下“拆包”(另一个相关概念):

  • 拆包 是指一个数据包太大,被 TCP 拆成了若干段分别发送,接收端一次 recv() 可能只能读到其中一部分。


如何解决粘包问题?

通常要靠 应用层协议来定包的边界,常见方法有:

  1. 固定长度:每个包长度固定,比如每个包100字节。

  2. 分隔符:在每个包末尾加上特殊字符,如 \n|END| 等。

  3. 包头加长度字段:先发送一个表示包体长度的字段,然后再发送包体。

其它问题

除了粘包和拆包的基本理论知识,想进行一次完整的实战体验,还要了解所用网络库的接口机制和底层机制,比如本次我操作的是:libevent网络库在差分数据同步中的应用。

先看下发送端代码把:

int net_send_diff_data(S_CONNECT *conn, char *dest_file_name, FILE_METEDATA *p_meta,MASTER_CONFIG *p_local_pmaster_cfg, GQueue *tag_queue)
{int len = 0;uint32_t total_len = 0;int left_len = 0;int ret = ZX_SUCCESS;int njson_len = 0;char *str_json = NULL;cJSON *cjson = NULL;FILE *fp = NULL;char* buffer = malloc(MAX_READ_BUFFER);char *pkg = NULL;int16_t uextend;uint64_t diff_data_len = 0;int diff_tags = tag_queue->length;EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();TRUNK_INFO* ptrunk_info = malloc(sizeof(TRUNK_INFO) + MAX_READ_BUFFER);if (!ptrunk_info){ret = ZX_ERR_GENERAL;goto exit;}(void)p_local_pmaster_cfg;cjson = cJSON_CreateObject();if(cjson){cJSON_AddStringToObject(cjson, "file_name", dest_file_name);#ifdef _MSC_VERsprintf(buffer, "%I64u", p_meta->file_stat.st_size);#elsesprintf(buffer, "%lu", p_meta->file_stat.st_size);#endifcJSON_AddStringToObject(cjson, "file_size", buffer);sprintf(buffer, "%d", tag_queue->length + 1);cJSON_AddStringToObject(cjson, "diff_trunks_sum", buffer);sprintf(buffer, "%d", p_meta->file_stat.st_mode);cJSON_AddStringToObject(cjson, "file_mode", buffer);}else{log_error(__FILE__,__LINE__,"cJSON_CreateObject failed");ret = ZX_ERR_GENERAL;goto exit;}str_json = cJSON_Print(cjson);njson_len = strlen(str_json);cJSON_Delete(cjson);fp = zfopen(p_meta->file_name, "rb");if(!fp){log_error(__FILE__,__LINE__,"net_send_diff_data fopen %s failed ,ERR : %s",p_meta->file_name, strerror(errno));ret = ZX_ERR_FD_OPEN;goto exit;}pkg = malloc(sizeof(COMMON_PKG) + njson_len);uextend = -100 - njson_len;/* 发包头 */net_create_package((COMMON_PKG *)pkg, PKG_TYPE_ZCOPY_TO_ZCOPY_SYNC,PKG_TYPE_SYNC_SET_FILE_TRUNKS_DATA_REQ,IS_JSON,
http://www.dtcms.com/wzjs/500604.html

相关文章:

  • 济南网站建设方案书范文百度图片搜索网页版
  • 网站建设属于什么支出关键词歌词
  • 做营销网站企业优化关键词的方法包括
  • 手机如何自制网站网络营销方式包括哪些
  • 新网站 蜘蛛楼市最新消息
  • 新手做网站如何赚钱网站制作教程
  • 中山精品网站建设流程千万别手贱在百度上搜这些词
  • 资讯类网站模板在线客服系统
  • 茂名整站优化网页制作app
  • 法治建设的网站站长工具seo推广
  • 开家网站建设培训学校项目推广平台有哪些
  • erp软件前十名seo网站优化培训多少价格
  • 郑州做网站的联系方式网络营销与策划试题及答案
  • 苹果cms影视源码武汉抖音seo搜索
  • 昌平做网站公司搜索引擎营销的英文缩写
  • 永久建站空间购买网络推广是什么专业
  • 黄石网站建设公司盐城seo排名
  • 做效果图比较好的模型网站有哪些营销推广策划方案
  • 接做施工图的网站免费推广方式都有哪些
  • 广东平台网站建设制作正规推广赚佣金的平台
  • thinkphp制作网站开发成都网站推广公司
  • 哪些网站是做色选机销售的网络营销的功能有哪些?
  • wordpress怎么恢复自带主题seo基础知识
  • 做淘宝网站用什么软件做湖南网络优化
  • 做母婴的网站有哪些北京seo设计公司
  • 淘宝上做网站建设靠谱吗百度官方网平台
  • 重庆企业网站制作公司线上平台推广方式
  • 学习建设网站滕州今日头条新闻
  • 专业做汽车网站优化排名数据查询网站
  • 沈阳企业建站系统模板兰州seo培训