vc6.0 MFC 先用udp广播,又client建立连接,新手求大神解答

vc6.0 MFC 先用udp广播,再client建立连接,新手求大神解答
delphi 里面是
 IdudpServer1.Broadcast('EASYNET',120); //广播
 
IdUDPServer1UDPRead 事件里:
   IP :=    ABinding.PeerIP;   //获取设备ip端口
   port :=  ABinding.port;

按钮事件里:
  ClientSocket1.Active:=False;   //建立连接
  ClientSocket1.Host:=IP;
  ClientSocket1.Port:=120;
  ClientSocket1.Active:=True;  


用MFC怎么实现啊。。

我现在  MFC 里面 最基础的广播 都有点问题啊:

CString msg = "EASYNET";
SOCKADDR_IN addr;

int broad = 1;

SOCKET fd = socket(AF_INET,SOCK_DGRAM,0);

setsockopt(fd,SOL_SOCKET,SO_BROADCAST,(const char *)&broad,sizeof(broad));

addr.sin_addr.S_un.S_addr= INADDR_BROADCAST;

addr.sin_family = AF_INET;

addr.sin_port = htons(120);

sendto(fd,msg,strlen(msg)+1,0,(SOCKADDR *)&addr,sizeof(SOCKADDR));

------解决方案--------------------
SOCKADDR_IN addr = {0};
SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(INVALID_SOCKET == sock)
{
goto __CLEANUP__;
}

addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);
addr.sin_port = htons(DEFAULT_BROADCAST_PORT);
BOOL bBroadcast = TRUE;

if(SOCKET_ERROR == setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(bBroadcast)))
{
goto __CLEANUP__;
}

if(SOCKET_ERROR == sendto(sock, (char*)szIpAddress, sizeof(szIpAddress), 0, (LPSOCKADDR)&addr, sizeof(addr)))
{

}

------解决方案--------------------
引用:
SOCKADDR_IN addr = {0};
SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(INVALID_SOCKET == sock)
{
goto __CLEANUP__;
}

addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);
addr.sin_port = htons(DEFAULT_BROADCAST_PORT);
BOOL bBroadcast = TRUE;

if(SOCKET_ERROR == setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(bBroadcast)))
{
goto __CLEANUP__;
}

if(SOCKET_ERROR == sendto(sock, (char*)szIpAddress, sizeof(szIpAddress), 0, (LPSOCKADDR)&addr, sizeof(addr)))
{

}
  比如我知道控制卡的固定端口是120,那addr.sin_port = htons(120);     而且szIpAddress就是我要填入的广播内容吗,   但是__CLEANUP__ 未定义,需要声明哪个?
------解决方案--------------------
udp广播成功以后,怎么获取到应答的 对象IP 就像   dlphi 里的

 IdUDPServer1UDPRead 事件:
   IP :=    ABinding.PeerIP;   //获取设备ip端口
   port :=  ABinding.port;