下面是我创建的一个线程监听接受发送的代码,在判断语句 if(data[0]=='@')的内容为什么不能够将 传送内容马上传进文件里面保存,要等到我把程序关闭才有显示。而且里面那个if语句好像永远不会执行啊,哪里错了,怎么修改啊。void CScanUDPDlg::ThreadFunc()//创建监听线程函数
{
WSADATA wsd;
    WSAStartup(MAKEWORD(2,0),&wsd);
SOCKET socksrv=socket(AF_INET,SOCK_STREAM,0);//创建套接字连接    
sockaddr_in sasrv={0};
sasrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sasrv.sin_family=AF_INET;
sasrv.sin_port=htons(9999);
bind(socksrv,(sockaddr*)&sasrv,sizeof(sasrv));//绑定套接字
listen(socksrv,1);//监听模式
while(1)
{
SOCKET client=INVALID_SOCKET;
client=accept(socksrv,NULL,NULL);
char data[2];
memset(data,0,2);
int retlen=recv(client,data,2,0);
if (data[0]=='*')
{
SOCKET client=INVALID_SOCKET;
client=socket(AF_INET,SOCK_STREAM,0);
if(client==INVALID_SOCKET)
{
AfxMessageBox("创建套接字失败");
return;
}
//连接到服务器
sockaddr_in sa={0};
sa.sin_family=AF_INET;
sa.sin_port=htons(9999);
sa.sin_addr.s_addr=inet_addr("192.168.1.135");
if(connect(client,(sockaddr*)&sa,sizeof(sa))==SOCKET_ERROR)
{
AfxMessageBox("连接到服务器失败");
}
send(client,"@",2,0);//接收到@字符后开始传输共享文件列表
FILE *file=fopen("file.txt","rb");  //以二进制打开
char buffer[256];
int nCount=0;
do 

nCount=fread(buffer,1,256,file);
if(nCount<256)
buffer[nCount]='\0';
send(client,buffer,nCount,0);
}//发送数据
while(nCount==256);
fclose(file); 
}
if(data[0]=='@')
{
FILE *file=fopen("receive.txt","wb");//接收的数据放入文件.txt中 
char buffer[256];
while(1)
{
memset(buffer,0,256);
retlen=recv(client,buffer,256,0);
fwrite(buffer,1,retlen,file);
if (retlen==0)
{
fclose(file);break;
}


}
if (data[0]=='#')
{
char buffer[256];//储存文件名
retlen=recv(client,buffer,256,0);
buffer[retlen]='\0'; SOCKET client=INVALID_SOCKET;
client=socket(AF_INET,SOCK_STREAM,0);
if(client==INVALID_SOCKET)
{
AfxMessageBox("创建套接字失败");
return;
}
//连接到服务器
sockaddr_in sa={0};
sa.sin_family=AF_INET;
sa.sin_port=htons(9999);
sa.sin_addr.s_addr=inet_addr("192.168.1.135");
if(connect(client,(sockaddr*)&sa,sizeof(sa))==SOCKET_ERROR)
{
AfxMessageBox("连接到服务器失败");
}
send(client,"$",2,0);//接收到$字符后开始传输读取文件发送
FILE *file=fopen(buffer,"rb");//接收的数据放入文.txt中   
if(!file)
{
AfxMessageBox("打开文件失败");
return;
}
int nCount=0;
do 

nCount=fread(buffer,1,256,file); 
if(nCount<256)
buffer[nCount]='\0';
send(client,buffer,nCount,0);
}//发送数据
while(nCount==256);
fclose(file); 
}
if(data[0]=='$')
{
FILE *file=fopen("receive.txt","wb");//接收的数据放入文件.txt中 
fwrite("sdsad",1,6,file);
char buffer[256];
while(1)
{
memset(buffer,0,256);
retlen=recv(client,buffer,256,0);
fwrite(buffer,1,retlen,file);
if (retlen==0)
{
break;
}

fclose(file);
}
}
}