使用udp发送广播数据,发送出错,请前辈帮忙!

Fangyuanshan 2006-01-21 11:36:50
各位前辈,小弟近日在编写一个使用udp进行广播的动态库程序,广播地址为255.255.255.255。在win2000下开发,在本机上测试没有发现问题,可以正常使用。交给客户使用,客户反映无法使用。经过测试,在比较干净的电脑上确实无法使用,函数出错返回。程序如下;


class UDPSocket : public CAsyncSocket
{
......
}

UDPSocket *g_pUDPSocket;//此为全局指针

extern "C" int __stdcall udp_broadcast(SEARCHECHO Proc)
{
int sendlen;
BOOL bBroadcast = true;

g_pUDPSocket->NewDeviceProc = Proc;
g_pUDPSocket->SetSockOpt(SO_BROADCAST, (BOOL*)&bBroadcast, sizeof(BOOL));
sendlen = g_pUDPSocket->SendTo("X", 1, 65535, "255.255.255.255");

if (sendlen == SOCKET_ERROR)
{
return (g_pUDPSocket->GetLastError());
}
else
return(1);
}

函数返回10022,表示SendTo使用了一个无效的参数。百思不得其解,不知哪位前辈可以告知?

...全文
255 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fangyuanshan 2006-02-13
  • 打赏
  • 举报
回复
问题解决了,使用
int SendTo( const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int
nSockAddrLen, int nFlags = 0 );
进行发送数据就完全没有问题.

问题来了,我可不知道如何给分了.
zdleek 2006-02-13
  • 打赏
  • 举报
回复
不知道给就给我好了,我的专家分很少呢
Fangyuanshan 2006-02-08
  • 打赏
  • 举报
回复
将端口号改小了也没有效果,还是和原来一样,哪位前辈还有什么好招吗?跟操作系统、winsock版本有没有关系?郁闷中......
Fangyuanshan 2006-02-04
  • 打赏
  • 举报
回复
回复 nuaawenlin(飘人)
不好意思,我公司放假比较早,回家后又不上网,所以就没有及时回复。你给我提的两点建议,
SetSockOpt(SO_BROADCAST, (BOOL*)&bBroadcast, sizeof(BOOL));
这个语句我测试过,函数调用没有出错。返回值为成功返回。
至于将端口号设置小些我没有试过。倒是可以试试。过两天我公司上班,再试试。先谢过了!
dzq138 2006-01-25
  • 打赏
  • 举报
回复
......
nuaawenlin 2006-01-21
  • 打赏
  • 举报
回复
查看g_pUDPSocket->SetSockOpt(SO_BROADCAST, (BOOL*)&bBroadcast, sizeof(BOOL));
有没有返回错误

sendlen = g_pUDPSocket->SendTo("X", 1, 65535, "255.255.255.255");

将端口号设置小一些试试,65535是最大值了

18,356

社区成员

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

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