首页 > 编程语言 >关于Socket网络编程粘包问题的思考

关于Socket网络编程粘包问题的思考

时间:2024-03-13 21:00:43浏览次数:37  
标签:Socket 编程 TCP 粘包 问题 数据包

  首先,必须说明的是,粘包问题并不是源于通信协议TCP,TCP是基于连接的安全的协议,不会出现所谓的粘包问题,但这也只是对于流式传输是这样的。但我们需要不定长的分段数据包时,粘包问题就出现了。因此粘包问题是源自于我们的需求,而不是TCP。

  解决粘包问题,明确来说,就是解决数据定界问题。我简单想到了以下方案:

  1. 自定义数据格式,如用特定字符表示包的结束,但是这样需要对每一个字符进行判断,显然效率不高;可以用xml语言格式发送数据,用正则匹配判断是否正确接受。在包头放数据包的一些重要信息,如包长等。
  2.  

标签:Socket,编程,TCP,粘包,问题,数据包
From: https://www.cnblogs.com/Liubox/p/18071510

相关文章

  • 实验1_C语言输入输出和简单程序应用编程实验报告
    实验任务一1.task1_1点击查看代码#include<stdio.h>#include<stdlib.h>intmain(){ printf("0\n"); printf("<H>\n"); printf("II\n"); printf("0\n"); printf("<H>\n"); printf(&quo......
  • 常见的编程概念
    常见的编程概念本章涵盖了几乎所有编程语言中出现的概念以及它们在Rust中的工作原理。许多编程语言的核心都有很多共同点。本章中提出的概念都不是Rust所独有的,但我们将在Rust的背景下讨论它们,并解释使用这些概念的约定。具体来说,您将了解变量、基本类型、函数、注释和控......
  • spark大数据快速编程入门
    1.Hadoop生态圈相关组件 namenode:master节点,处理客户端的请求。datanode:slave节点,存储实际数据,汇报存储信息给namenode。client:切分文件,访问hdfs,与namenode交互,获取文件位置信息,与datanode交互,读取和写入数据。secondarynamenode:辅助namenode,分担其工作量,紧急情况下和辅......
  • 突破编程_C++_C++11新特性(模板的改进与细节)
    1模板右尖括号的改进在C++11之前,模板的解析和实例化过程中,右尖括号>的处理有时会导致一些意外的结果,特别是在嵌套模板或模板模板参数中。这是因为C++编译器通常会试图“查看前方”来确定何时结束模板参数的列表,这有时会导致解析错误。C++11对模板的右尖括号处理进......
  • Windows编程:(一)汇编Hello World
    万事都讲究缘起,这次的缘起是要用WinDbg调试界面卡死。看不懂WinDbg的结果。以前都是靠猜,很受打击,索性学习一下。主要学习了几个步骤:1.什么是汇编?汇编的来龙去脉是啥?为什么需要汇编?它与C/C++有什么联系?2.跑一个汇编的HelloWorld。前几个问题,我就直接摘抄了。着重说一下跑Hello......
  • 202009青少年软件编程(Scratch)等级考试试卷(一级)
    青少年软件编程(Scratch)等级考试试卷(一级)2020年9月第1题:【单选题】运行下图中脚本,角色所在位置用坐标表示为(    )A:(45,0)B:(0,145) C:(145,0) D:(100,0) 【正确答案】:C【试题解析】 :第2题:【单选题】Scratch软件自带的可以结束程序的按钮是(  )A:......
  • 201912青少年软件编程(Scratch)等级考试试卷(一级)
    201912青少年软件编程(Scratch)等级考试试卷(一级)第1题:【单选题】关于造型和背景,下面说法不正确的是?A:造型编号从1开始B:有四个背景,删除第二个背景,背景编号为1,3,4C:只有一个背景时,不能删除这个背景D:角色可以有一个或多个造型【正确答案】:B【试题解析】 :第2题:【......
  • springboot的代理模式示例----面向切面编程
    1.定义切面类 2.编写切面类importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.xlkh.bigscreen.common.utils.RedisDeviceUtil;importcom.xlkh.bigscreen.service.bigscreen.BigscreenRedisService;importcom.xlkh.bigs......
  • 4.MAC平台Python的下载、安装(含Python2.7+Python3.12双版本环境变量配置)——《跟老吕
    4.MAC平台Python的下载、安装(含Python2.7+Python3.12双版本环境变量配置)——《跟老吕学Python编程》)——跟老吕学Python编程一、下载MAC版Python1.Python官网2.MAC版Python下载网址二、在MAC安装Python1.在MAC安装Python2.阅读Python重要信息3.同意Python许可4.确认同意......
  • C语言入门学习 --- 9.编程练习题
    1.正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。输入:57输出:35#include<stdio.h>intmain(){ inta=0; intb=0; inti=0; scanf("%d%......