recv接收不到字符串

taft 2004-08-10 06:48:15
在客户端发送buf
iSend=send(sClient,buf,sizeof(buf),0);
服务器端接收
iLen = recv(sAccept,buf,sizeof(buf),0);
iLen和发送的长度一样,但就是在接收的buf 里面全是0 这个是怎么回事哦?
先谢了
...全文
188 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xujungood 2004-08-11
  • 打赏
  • 举报
回复
接受端的缓冲区大小才2个字节?
自由的风 2004-08-11
  • 打赏
  • 举报
回复
调试呗,那么几行代码任谁也看不出问题,况且还只有recv端的代码,谁知道你的send端是否正确
taft 2004-08-11
  • 打赏
  • 举报
回复
我把2改为 sizeof(buf)
bluwindhrt 2004-08-11
  • 打赏
  • 举报
回复
你才接收两个字节,就算发送方是有效的数据,这前两个字节都为0也不是不可能啊!
VCSQLVB 2004-08-11
  • 打赏
  • 举报
回复
你的接受端仅能正常接收一次,如果客户端再次发送数据(没重新连接的话),将失败。
VCSQLVB 2004-08-11
  • 打赏
  • 举报
回复
能否保证发送的数据正常?
cpmax 2004-08-11
  • 打赏
  • 举报
回复
再把发送方贴出来
airsmith_lh 2004-08-10
  • 打赏
  • 举报
回复
自己怕是发送端发的数据本身就是零
oyljerry 2004-08-10
  • 打赏
  • 举报
回复
这么奇怪的问题!要不设break单步调试看看
taft 2004-08-10
  • 打赏
  • 举报
回复
to howtotell
我用 i=sizeof(buf) 结果是1024
还有
我都把sizeof(buf)改成1024还是不成啊
howtotell 2004-08-10
  • 打赏
  • 举报
回复
下面两句都有问题.
iSend=send(sClient,buf,sizeof(buf),0);
如果buf是char*型,那么就不能用sizeof,这样只是指针的大小,要该写成你传输进去的数据的大小,例如strlen(buf),也可以指定一个比较大的固定值,例如1024;
iLen = recv(sAccept,buf,2,0);
这里接收也要指定大小,指定大点,例如1024没有关系,但是你指定2肯定小了.
taft 2004-08-10
  • 打赏
  • 举报
回复
char buf[1024];
else的内容好像有错误 在哪里呢?
没收到可是iLen都返回长度了的
PingJie 2004-08-10
  • 打赏
  • 举报
回复
buf是什么类型的?
else的内容好像有错误
可能没接收到
taft 2004-08-10
  • 打赏
  • 举报
回复
接收代码:
iLen = sizeof(cli);
while(1)
{
sAccept = accept(sListen,(struct sockaddr *)&cli,&iLen);
if(sAccept==INVALID_SOCKET)
{
AfxMessageBox("accept() Failed",MB_OK,0);
return 0;
}

iLen = recv(sAccept,buf,2,0);
if(iLen == 0)
return 0;
else
if(iLen == SOCKET_ERROR)
{
AfxMessageBox("recv() Failed",MB_OK,0);
return 0;
}
AfxMessageBox(buf,MB_OK,0);
closesocket(sAccept);
closesocket(sListen);
WSACleanup();
return 1;
}
cpmax 2004-08-10
  • 打赏
  • 举报
回复
把代码帖出来看一下!

18,356

社区成员

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

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