• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

字符串来送分

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);

在服务器不重起的情况下,第一次收到的数据为"你好 (",以后收到的数据正常,为什么?
...全文
99 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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);

回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-12 09:25
社区公告

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