这是实现文件传输程序的单线程代码,怎么把它改成多线程的啊??麻烦各位高手指点迷津,急啊!!!在线等待解决!
CListenThread::CListenThread(CTransferDemoDlg * p)
{
pDlg=p;
}
void CListenThread::run()
{
//========接收文件线程=========
//创建套接字
int servfd,clifd;
int port=pDlg->m_wPort + PORT;
struct sockaddr_in servaddr,cliaddr;
int r;
if ((servfd = socket(AF_INET,SOCK_DGRAM, 0 )) < 0 )
{
printf( " create socket error!\n " );
return;
}
printf("%d\n",port);
bzero( & servaddr, sizeof (servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = htons(INADDR_ANY);
if (bind(servfd,( struct sockaddr * ) & servaddr, sizeof (servaddr)) < 0 )
{
printf( " bind to port %d failure!\n " ,port);
return;
}
r = fcntl(servfd, F_GETFL, 0);//获得描述符标志
fcntl(servfd, F_SETFL, r & ~O_NONBLOCK);//设置套接字为非阻塞式
//通过消息发送调用OnAcceptTransfers()
pDlg->OnAcceptTransfers();
pDlg->ReceiveFile(servfd);
}