您现在的位置是:首页» windows系统» socket读取字符串乱码,c语言socket数据接收不全

socket读取字符串乱码,c语言socket数据接收不全

2023-12-05 05:07:23
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 1、第一,sizeof不是这么用的,sizeof()是计算数据类型的大小比如sizeof(CSendPackage);计算字符串的大小应该用strlen()这类的函数。2、第二,CSe

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

1、第一,sizeof不是这么用的,sizeof()是计算数据类型的大小比如sizeof(CSendPackage);计算字符串的大小应该用strlen()这类的函数。

2、第二,CSendPackage的有些数据成员是不能发送的,这点可以看看类的拷贝构造函数。

3、简单说下,当一个类里有动态数组时,想复制这个类就不能简单的用赋值等号(=),当然

4、memcpy(&pkg.subs,&subs,sizeof(subs));这是更加不行的。

5、subs.m_SubsID="123456";这句可以知道.m_SubsID是一个string或者Cstring类型,这种类型里面是用动态数组存储字符串数据的,比如Cstring只占四字节,里面有个指向字符串的指针,你发送

6、pkg时不会发送pkg中所有指针所指向的数据。

1、bytes= newSocket.Receive(recByteMsg, recByteMsg.Length, 0);

2、recMsg= Encoding.GetEncoding("GB2312").GetString(recByteMsg, 0, bytes);

3、bytes= newSocket.Receive(recByteMsg, recByteMsg.Length, 0);

4、recMsg= Encoding.GetEncoding("GB2312").GetString(recByteMsg, 0, bytes);

5、如果你采用阻塞模式无须重复这样写啊,当然阻塞模式可能出现粘包问题

6、我们一般采用发送端设置边界标示,根据标示在接受端来区分上下包,这和IP包的包头标志是一样的道理。如果你发送的字符长度是固定的那么也可以不需要设置边界标志了。

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: 乱码 情况 程序