字符串来送分

LoveAlien 2001-07-12 09:25:38
用Socket通讯,我从客户端发送一个char到服务器端,在服务器不重起的情况下,第一次接收到的字符问什么不正确。
如:
//client
char m[50];
strcpy(m,"你好");
int nLength;
nLength=strlen(m);
client.send((char*)&nLength,4,60);
client.send(m,nLength,60);
//server
int nLength;
char *s;
server.recv((char*)&nLength,4,60);
s=new char[nLength];
server.recv(s,nLength,60);

在服务器不重起的情况下,第一次收到的数据为"你好 (",以后收到的数据正常,为什么?
...全文
125 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
AriDo 2001-07-12
  • 打赏
  • 举报
回复
对!对!
xxxbird 2001-07-12
  • 打赏
  • 举报
回复

保险的做法:
s=new char[nLength + 1];
memset (s, 0, nLength + 1);


LoveAlien 2001-07-12
  • 打赏
  • 举报
回复
谢谢各位!
我发现了,应该是在服务端
char s[100];
s[nLength]=NULL;---重要
memset(m,0,nLength)
这样就可以了
AriDo 2001-07-12
  • 打赏
  • 举报
回复
Server收到的nLength是多少?
AriDo 2001-07-12
  • 打赏
  • 举报
回复
用LPCTSTR强制转换一下。
LoveAlien 2001-07-12
  • 打赏
  • 举报
回复
现在我头都晕了,因为只有第一次才出现错误的情况,以后一切正常
xxxbird 2001-07-12
  • 打赏
  • 举报
回复

将Client端的CString内容传给Server, 再在Server端重新生成一个CString啦。

LoveAlien 2001-07-12
  • 打赏
  • 举报
回复
AriDo(AriDo) 我在服务器和客户端都对其进行了内存分配,但是问题依旧
xxxbird 2001-07-12
  • 打赏
  • 举报
回复

服务器端也要加啊:
memset (s, 0, nLength);
在server.recv前。

LoveAlien 2001-07-12
  • 打赏
  • 举报
回复
还有问题,怎样在服务器和客户之间传递CString类型的数值
AriDo 2001-07-12
  • 打赏
  • 举报
回复
好象是接收端的问题吧,memset(s, 0, nLength);
LoveAlien 2001-07-12
  • 打赏
  • 举报
回复
xxxbird(*说你行,你就行,不行也行*) 还是不行呀!
xxxbird 2001-07-12
  • 打赏
  • 举报
回复

add the following line before strcpy:

memset (m, 0, 50);

16,472

社区成员

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

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

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