MFC使用api socket从客户端向服务器端发送字符串,接收的时候字符丢失?

deng88xin 2014-09-27 11:01:45
本人在客户端发送了条数据
send(m_SockClient,sid,sizeof(sid),0);

其中sid是由CString转换而来:
char *sid=cs2ca(patientId);

cs2ca是自己写的一个CString转char*的函数。。
原patientId=“SBJ-123”;
本人测试客户端这边发送出去的sid应该没问题。。。

接下来是服务器端:

char sid[1024];
int iid= recv(m_Server[iConnect-1],sid,1024,0);

测试输出sid的值为“SBJ”,后面的“-123”不见了。。

在线坐等高手解答。。
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng88xin 2014-09-29
  • 打赏
  • 举报
回复
谢谢楼上诸位,楼主犯了个常见错误,即把数组名和指针等同起来了,sizeof(数组名)和sizeof(指针)大小是不一样的。。
赵4老师 2014-09-28
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
sumos 2014-09-28
  • 打赏
  • 举报
回复
send(m_SockClient,sid,sizeof(sid),0); sizeof改成strlen
笨笨仔 2014-09-28
  • 打赏
  • 举报
回复
注意1楼提示! 其实你的转换函数完全可以返回转换后的长度,直接用此做为发送长度。
Eleven 2014-09-27
  • 打赏
  • 举报
回复
send(m_SockClient,sid,sizeof(sid),0); ------------------------------ 这里的sizeof(sid)错了吧,32位系统下sizeof(sid) == 4, 修改一下写成sizeof(char)* strlen(sid)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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