下面是我用来接收的一段程序,
void CGr47sockDlg::Onstart() 
{
// TODO: Add your control notification handler code here

    
// AfxBeginThread(runthread, (LPVOID)this);

sockaddr_in from,sin;
int port=6000,fromport=0;
char smsg[256]; int fromlength=sizeof(SOCKADDR);


from.sin_family=AF_INET;
    from.sin_addr.s_addr=inet_addr("192.168.2.11");
from.sin_port=htons(port);
int sin_len=sizeof(from); sin.sin_family=AF_INET;
    sin.sin_addr.s_addr=htonl(INADDR_ANY);
sin.sin_port=htons(fromport);
int sin_lenfr=sizeof(sin);
 
int socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);
bind(socket_descriptor,(struct sockaddr*)&from,sizeof(from));  while(1)
{
ZeroMemory(smsg,256);
Sleep(100);
//从广播地址发送消息
int ret =recvfrom(socket_descriptor,smsg,256,0,(struct sockaddr FAR *)&sin,&fromlength);
Sleep(200);
TRACE( "%s\n", smsg);
m_rec=smsg;
UpdateData(FALSE);
m_ctlrec.AddString((smsg));
TRACE("smsg=%s\n",smsg);
TRACE("sin_addr%s\n",inet_ntoa(sin.sin_addr));
TRACE("sin_port%i\n",ntohs(sin.sin_port));


}
当我调试程序时,使用其他UDP调试软件向该程序发送数据,在调试时能看到接收到的数据(在调试窗口中),但在执行的对话框中无法显示,是不是程序处于堵塞引起的,程序没接受到数据时会在recfrom处等待;
    如果使用非堵塞方式,应该怎样实现啊!