recvfrom接受不到数据

tanwei1002 2009-06-15 12:05:33
在服务端发送数据给客户端,发送代码如下:
sockaddr_in remote;  
remote.sin_addr.S_un.S_addr = htonl((*ServerIterator)->ip);
remote.sin_family = AF_INET;
remote.sin_port = htons((*ServerIterator)->port);

int isend = sendto(m_PrimaryUDP, (const char *)&realmessage, sizeof(realmessage), 0, (const sockaddr*)
&remote, sizeof(remote));
/*
realmessagewei为发送的内容,remote为客户端地址,m_PrimaryUDP为一个套接字
经调试,发送没问题,发送内容和地址都没问题。
*/


但是客户端没有接受到任何数据,不知道哪出问题了
接受代码如下
sockaddr_in sender;  
stMessage recvbuf; //接受数据的结构体
memset(&recvbuf, 0, sizeof(stMessage));
recvfrom(socket, (char *)&recvbuf, sizeof(stMessage), 0, (sockaddr *)&sender, &dwSender);

调试发现recvbuf为空,可是不明白怎么会为空呢???

望高人指点一二
...全文
250 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
giant85 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tanwei1002 的回复:]
缓存类型是我自己定义…
[/Quote]
问题怎么解决的啊,跟缓存类型有关?
tanwei1002 2009-06-16
  • 打赏
  • 举报
回复
已经解决
谢谢各位了
giant85 2009-06-15
  • 打赏
  • 举报
回复
你的Recvfrom第一个参数有问题,我不知道是你往这粘错了还是代码本来就这样
按理说这个错误编译都通不过的啊
参数2,3,6从你给出的上下文看不出来足够的信息来确定是否有问题,参数4,5没问题
另外,Recvform跟Sendto一样,之前也需要设置一下Socket
这块很多书上都有的
tanwei1002 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 giant85 的回复:]
我在MSDN里没有查到SOCKET这么个东西
只有socket
另外,socket使用之前是要初使化的
[/Quote]

SOCKET是指套接字的类型

我有初始化的

[Quote=引用 6 楼 bug_z 的回复:]
看你这麽多勋章,不敢回答你。。。。。。。。。。。。
O(∩_∩)O~
[/Quote]
惭愧,勋章虽然有几个 但是不是技术区的勋章


[Quote=引用 5 楼 giant85 的回复:]
你的缓存类型是什么,你换成Char*试试
[/Quote]
缓存类型是我自己定义的一个结构体
长老QY 2009-06-15
  • 打赏
  • 举报
回复
你调用WSAGetLastError()函数,看一下错误码是什么,比如缓冲区太小等等。
bug_z 2009-06-15
  • 打赏
  • 举报
回复
看你这麽多勋章,不敢回答你。。。。。。。。。。。。
O(∩_∩)O~
giant85 2009-06-15
  • 打赏
  • 举报
回复
你的缓存类型是什么,你换成Char*试试
giant85 2009-06-15
  • 打赏
  • 举报
回复
我在MSDN里没有查到SOCKET这么个东西
只有socket
另外,socket使用之前是要初使化的
tanwei1002 2009-06-15
  • 打赏
  • 举报
回复
怎么没人指点呢?

那我把客户端接受数据的部分代码再贴详细点吧
	sockaddr_in sender;
stMessage recvbuf; //接受数据的结构体
memset(&recvbuf, 0, sizeof(stMessage));
SOCKET socket = m_PrimaryUDP; //m_PrimaryUDP为已经绑定好的套接字
recvfrom(socket, (char *)&recvbuf, sizeof(stMessage), 0, (sockaddr *)&sender, &dwSender);


调试时候 socket不为空,但是recvbuf为空,很不明白为什么为空了呢?
而服务端发送的确成功了啊
tanwei1002 2009-06-15
  • 打赏
  • 举报
回复
Recvfrom的第一个参数没问题啊,第一个参数socket是一个套接字 即 SOCKET socket

18,356

社区成员

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

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