小弟想通过油槽在同一局域网内的一台机子(比如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进行多播,油槽简单,忘前辈大侠指点指点,小弟不胜感激!!