各位前辈,小弟近日在编写一个使用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使用了一个无效的参数。百思不得其解,不知哪位前辈可以告知?
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使用了一个无效的参数。百思不得其解,不知哪位前辈可以告知?
解决方案 »
- new delete 多线程的问题???
- 结构体作函数返回值的问题
- 请问如何在对话框和菜单中加入网站链接?
- 如何实现在改变对话框大小的时候 水平方向不能够拖动改变大小 而垂直方向可以实现大小的改变
- 链接问题!
- 按理说,TCP的传输方式的优点很多,在速度上有些缺点,但是为什么还要用UDP的传输方式,udp到底有什么优点
- 链接报错: error C2664: 'CreateThread' ............
- SOCKET初始化问题
- 请问如何得到80端口流入的数据?
- 如何在VC中截获shell程序的输出
- 有人能将完整的MFC的执行过程说出来吗?
- wangk(倒之)兄等高手请进, 同一问题第二贴,关于输入法的智能学习功能问题
有没有返回错误sendlen = g_pUDPSocket->SendTo("X", 1, 65535, "255.255.255.255");将端口号设置小一些试试,65535是最大值了
不好意思,我公司放假比较早,回家后又不上网,所以就没有及时回复。你给我提的两点建议,
SetSockOpt(SO_BROADCAST, (BOOL*)&bBroadcast, sizeof(BOOL));
这个语句我测试过,函数调用没有出错。返回值为成功返回。
至于将端口号设置小些我没有试过。倒是可以试试。过两天我公司上班,再试试。先谢过了!
int SendTo( const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int
nSockAddrLen, int nFlags = 0 );
进行发送数据就完全没有问题.问题来了,我可不知道如何给分了.