小弟想通过油槽在同一局域网内的一台机子(比如192.168.1.100),发送数据给该网络上的所有在线机子(比如192.168.1.300;192.168.104;...)。因此写了一个程序主要代码如下:
接受数据端(客户端)的创建油槽代码为:
m_hMailSolt = CreateMailslot(L"//./mailslot/MyMailSlot",0,MAILSLOT_WAIT_FOREVER,NULL);
if (m_hMailSolt == INVALID_HANDLE_VALUE )
{
::MessageBox(NULL,L"CreateMailslot Failed!",L"提示",MB_OK);
return S_OK;
}
...
while (某些条件)
{
if ( ReadFile(m_hMailSolt,chBuffer,1024,&nReadLength,NULL) /*重点*/)
{
::MessageBox(NULL,L"hahaha",L"收到信息",MB_OK);
}
else
{
::MessageBox(NULL,L"ReadFile Failed!",L"提示",MB_OK);
}
}
发送数据端(服务端)的主要代码:
hMailSlot = CreateFile(L"//*/mailslot/MyMailSlot",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
...
if (hMailSlot == INVALID_HANDLE_VALUE)
{
::MessageBox(NULL,L"目前没有客户端登入",L"提示",MB_OK);
return S_OK;
}
DWORD nWriteLength = 0;
if ( !WriteFile(hMailSlot,strMsg,1024,&nWriteLength,NULL) /*重点*/)
{
MessageBox(NULL,L"写入数据失败",L"提示",MB_OK);
return S_FALSE;
}
CloseHandle(hMailSlot);发现发送数据端打开油槽时没有弹出错误提示,接受数据端创建油槽时也没有错误,但在不同的机子之间就是不能接受数据,而且在本机上也不可以接受数据???
后来我把发送端打开油槽改为CreateFile(L"//./mailslot/MyMailSlot",... 这样在本机上可以通信,但在不同机子上不行,我用的是win7的系统。
不想用socket进行多播,油槽简单,忘前辈大侠指点指点,小弟不胜感激!!
接受数据端(客户端)的创建油槽代码为:
m_hMailSolt = CreateMailslot(L"//./mailslot/MyMailSlot",0,MAILSLOT_WAIT_FOREVER,NULL);
if (m_hMailSolt == INVALID_HANDLE_VALUE )
{
::MessageBox(NULL,L"CreateMailslot Failed!",L"提示",MB_OK);
return S_OK;
}
...
while (某些条件)
{
if ( ReadFile(m_hMailSolt,chBuffer,1024,&nReadLength,NULL) /*重点*/)
{
::MessageBox(NULL,L"hahaha",L"收到信息",MB_OK);
}
else
{
::MessageBox(NULL,L"ReadFile Failed!",L"提示",MB_OK);
}
}
发送数据端(服务端)的主要代码:
hMailSlot = CreateFile(L"//*/mailslot/MyMailSlot",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
...
if (hMailSlot == INVALID_HANDLE_VALUE)
{
::MessageBox(NULL,L"目前没有客户端登入",L"提示",MB_OK);
return S_OK;
}
DWORD nWriteLength = 0;
if ( !WriteFile(hMailSlot,strMsg,1024,&nWriteLength,NULL) /*重点*/)
{
MessageBox(NULL,L"写入数据失败",L"提示",MB_OK);
return S_FALSE;
}
CloseHandle(hMailSlot);发现发送数据端打开油槽时没有弹出错误提示,接受数据端创建油槽时也没有错误,但在不同的机子之间就是不能接受数据,而且在本机上也不可以接受数据???
后来我把发送端打开油槽改为CreateFile(L"//./mailslot/MyMailSlot",... 这样在本机上可以通信,但在不同机子上不行,我用的是win7的系统。
不想用socket进行多播,油槽简单,忘前辈大侠指点指点,小弟不胜感激!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货