求助套接字编程发送汉字的问题

weixin_40747990 2019-01-02 08:14:03
CString str1="编码";
BYTE cSendBuf1[1024];
memcpy(cSendBuf1,str1.GetBuffer(str1.GetLength()),str1.GetLength()); //将cstring放入byte数组
pSocket->Send(cSendBuf1,1024,0);

代码如上,放置在定时器里一直发送Access Violation at address 和正被停用的激活上下文不是最近激活的。
点击中断以后弹到 if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
的位置。
求大佬帮忙看看是什么问题
...全文
633 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2019-01-20
  • 打赏
  • 举报
回复
明显编码不匹配 服务器端和服务端要约定一个文字编码 不能这边用gb2312编码那边用UTF-16解码 至于字符串长度怎么约定也要做好 是像BSTR那样在字符串之前加长度呢,还是约定00表示字符串终结。
用户 昵称 2019-01-19
  • 打赏
  • 举报
回复
看描述发送英文没问题,那问题就出在汉字的格式上,看你发送方是mbcs还是unicode,只要接收方与发送方一致即可。
待续_1006 2019-01-10
  • 打赏
  • 举报
回复
顶楼上。。。。。。。。。。。。
xiaohuh421 2019-01-09
  • 打赏
  • 举报
回复
VS默认是unicode编码. 如果你的接收端也是VS写的, 就看一下, 是否也是unicode编码. 并且记得把你的char*缓冲区指针强制转换成TCHAR* 再赋值给CString, 否则CString会自动做一次编码转换, 出现乱码.
weixin_40747990 2019-01-03
  • 打赏
  • 举报
回复
貌似是内存溢出,感谢楼上。但是传过去的汉字只能显示为一个小方框是为什么啊
zgl7903 2019-01-03
  • 打赏
  • 举报
回复
初始化发送缓冲区试试看
BYTE cSendBuf[n];
memset(cSendBuf, 0, sizeof(cSendBuf));
memcpy(cSendBuf, (LPCTSTR)str1, str1.GetLength() * sizeof(TCHAR));

zgl7903 2019-01-03
  • 打赏
  • 举报
回复
可能是发送端和接收端的编译模式不一样? 一边是UNICODE 一边是多字节?
改为统一的格式,或者转为UTF8试试看




16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧