• 4887阅读
  • 0回复

急问:怎么实现多线程文件传输程序 [复制链接]

上一主题 下一主题
离线sisi
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-23
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
这是实现文件传输程序的单线程代码,怎么把它改成多线程的啊??麻烦各位高手指点迷津,急啊!!!在线等待解决!

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);

}
快速回复
限100 字节
 
上一个 下一个