don't use 广播
use UDP or TCP

解决方案 »

  1.   

    是UDP,因不知服务程序的IP,只好用广播来查询,
    即sendto()
      

  2.   


    以下代码为什么广播消息不能到达局域网?#define g_lBordCastPortRc 1680BOOL  g_BCTSendTo(LPVOID lpData,int nSize) 
    {
    // TODO: Add your command handler code here

    SOCKET s=INVALID_SOCKET;
    s=::socket(AF_INET,SOCK_DGRAM,0);
    if(s==INVALID_SOCKET)
    {
    AfxMessageBox("建立广播SOCKET 失败!");
    return FALSE;
    } BOOL boptval=TRUE;
    if(setsockopt (s,SOL_SOCKET,SO_BROADCAST, (char *)&boptval,sizeof(boptval)))
    {
    AfxMessageBox("setsockopt error ");
    ::closesocket(s);
    return FALSE;
    }
     
    struct sockaddr_in ds;//服务器主机地址
    ds.sin_family=AF_INET;
    ds.sin_port=::htons(u_short(g_lBordCastPortRc));
    ds.sin_addr.S_un.S_addr=INADDR_BROADCAST; FD_SET fd = {1, s};
    TIMEVAL tv = {0, 200};//200毫秒钟延迟 //设置发送超时
    if(SOCKET_ERROR ==::select(0, NULL, &fd, NULL, &tv))
    {
    ::closesocket(s);
    return FALSE;
    } int ret;
    ret=sendto(s,(const char *)lpData,nSize,0,(SOCKADDR *)&ds,sizeof(ds));
    if(ret==SOCKET_ERROR)
    {
    AfxMessageBox("sendto err");
    ::closesocket(s);
    return FALSE;
    }
    ::closesocket(s);
    return TRUE;
    }
      

  3.   

    --------------
    以上代码在本地局域网是完全正确的,但远程拨号上网广播信息就不能到达局域网,因此我的广播找服务软件就不行了,请问各位大虾,这是为什么?
    首先申明这不是黑客程序。
    我的目的是先广播找到服务程序后再用连接的TCP/IP通信。(因先不知服务程序的IP)
    --------------------
      

  4.   

    g_BCTSendTo()发送是成功了的,它返回TRUE,但信息的却没到达远程局域网,???
    广播不能通过网关吗???
    广播不能通过网关吗???