使用UDP协议,发送方成功发送,接受方就是收不到数据?

guanxg 2004-11-02 06:42:44
使用UDP协议,发送方成功发送,接受方就是收不到数据。报错10040,对应的是WSAEMSGSIZE,但是我将内部缓冲区设成4k了,怎么还不行呢?我的数据大概只有几百个字节,急死了
...全文
878 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-11-02
  • 打赏
  • 举报
回复
看接收方怎么接收的
guanxg 2004-11-02
  • 打赏
  • 举报
回复
问题找出来了,另一个工程中的编码方式不是unicode,结果导致结构体size不一样
bbcharm 2004-11-02
  • 打赏
  • 举报
回复
看看代码先
cryptonym 2004-11-02
  • 打赏
  • 举报
回复
数据是几百歌字节,可能发送参数中数据长度写错了,写成sizeof(buff)了,一不注意就有找个错误,应该写实际数据长度,不是缓冲的大小长度。
kingzai 2004-11-02
  • 打赏
  • 举报
回复
接收方的代码?注意recvfrom参数的用法
sharkhuang 2004-11-02
  • 打赏
  • 举报
回复
是不是你传入的长度不对啊?
mfc168 2004-11-02
  • 打赏
  • 举报
回复
还有的可能错误是:在数据报套接字上发送的一个消息大于内部消息缓冲区或一些其它网络限制,或者是用来接受数据报的缓冲区小于数据报本身,你将内部缓冲区设置后,先确认所发数据是否只有几百字节?接收端缓冲区是否不够大?
mfc168 2004-11-02
  • 打赏
  • 举报
回复
WSAEMSGSIZE
10040
訊息太長,緩衝區無法容納

這個錯誤發生原因是由於訊息資料過大,緩衝區無法容納。這裡的緩衝區可能是使用者指定的或是系統內部用的緩衝區。會發生這個錯誤的函式有四:

錯誤發生的時機

recv()、recvfrom()
利用datagram socket接收資料時,如果recv()或recvfrom()指定的緩衝區長度小於接收進來的datagram,這時後過長的datagram會被丟棄並告知函式WSAEMSGSIZE這個錯誤。
send()、sendto()
利用datagram socket傳送資料時,如果送出的資料緩衝區大於WinSock所能傳遞datagram的最大長度,這時send()和sendto()回發生WSAEMSGSIZE這個錯誤訊息
chn21 2004-11-02
  • 打赏
  • 举报
回复
谁知道在一个对话框内如何获得另一对话框的指针吗?
请教各位.谢谢!
cpmax 2004-11-02
  • 打赏
  • 举报
回复
把代码帖出来,看一下,估计是接收方没有为活动的状态!
gdy119 2004-11-02
  • 打赏
  • 举报
回复
recvform()函数使用错误!
recvform()之前memset()缓冲区;
robot_hy 2004-11-02
  • 打赏
  • 举报
回复
很有可能的两种情况的原因:
其一:就是上面所说的你的接收缓冲区大小设置的问题,如果设置过小,很可能造成数据接收不成功;还有就是可以看看你的缓冲区数据的情况
其二:就是你的接收程序是否有问题?发送是可以不停的发送数据,但如是接收,就得考虑接收问题,最好在这种情况下,开设一单独线程来进行接收。

18,356

社区成员

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

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