UDP协议广播如何停止循环,只输出一条信息?

UDP协议广播如何停止循环,只输出一条信息?
问题:想只输出一句“1234端口广播测试”,如何停止这个循环
这是sender端的代码:
#include "stdafx.h"
#include "../../common/initsock.h"
#include "stdio.h"
#include

CInitSock theSock;

int _tmain(int argc, _TCHAR* argv[])
{
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
// 有效SO_BROADCAST选项
BOOL bBroadcast = TRUE;
::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL));

// 设置广播地址,这里的广播端口号(电台)是1234
SOCKADDR_IN bcast;
bcast.sin_family = AF_INET;
bcast.sin_addr.s_addr = INADDR_BROADCAST; // ::inet_addr("255.255.255.255");
bcast.sin_port = htons(1234);

// 发送广播
printf(" 开始向1234端口发送广播数据... \n \n");
char sz[] = "1234端口广播测试. \r\n";
while(TRUE)
{
    ::sendto(s, sz, strlen(sz), 0, (sockaddr*)&bcast, sizeof(bcast));
    ::Sleep(2000);
    
}

/*

::send(s, sz, strlen(sz), 0);

sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = ntohs(3333);
addr.sin_addr.S_un.S_addr  = ADDR_ANY;

if(::bind(s, (sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
    printf(" bind() failed \n");
    return;
}

*/

return 0;

}

这里是recver端的代码:
#include "stdafx.h"
#include "../../common/initsock.h"
#include "stdio.h"
#include

CInitSock theSock;

int _tmain(int argc, _TCHAR* argv[])
{
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);

// 首先要绑定一个本地地址,指明广播端口号
SOCKADDR_IN sin;
sin.sin_family = AF_INET;
sin.sin_addr.S_un.S_addr = INADDR_ANY;    
sin.sin_port = ::ntohs(1234);
if(::bind(s, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
{
    printf(" bind() failed \n");
    return 0;
}

// 接收广播
printf(" 开始在1234端口接收广播数据... \n\n");
SOCKADDR_IN addrRemote;    
int nLen = sizeof(addrRemote);
char sz[256];
while(TRUE)
{
    int nRet = ::recvfrom(s, sz, 256, 0, (sockaddr*)&addrRemote, &nLen);
    if(nRet > 0)
    {
        sz[nRet] = '\0';
        printf(sz);
    }
}
return 0;

}