把Socket的指针传递进来就行
可是如果在线程里面 udp->Create(0,2,0);时候就出错了,非法操作请问是什么问题?我想在一个线程里面用udp定时和服务器交换一下信息
周期很长,10分钟一次吧应该怎么做? 
我想用sleep(600000)
Timer时候如果Revfrom不到信息就把主进程也堵塞了,
所以想在线程里面每10分钟建立一次socket,然后发送接受,再sleep这样行吗?有更好的解决办法不?

解决方案 »

  1.   

    UINT static Thread1(LPVOID lp)
    udp = new CSocket();
    udp->Create(0,2,0);
    ^^^^^^^^^^到这行就非法操作了不知道为什么?
      

  2.   

    最后一个连接地址参数可以为NULL, 不能设置0
    A pointer to a string containing the network address of the connected socket, a dotted number such as "128.56.22.8".
      

  3.   

    1、用udp->Create(0,SOCK_DGRAM);
    2、用Sleep(600000)肯定不合适,可以在线程里用SetTimer()设置定时器,甚至可以在无限循环中用WaitForSingleObject(hEvent, 600000)超时后再处理,总之不用Sleep()
      

  4.   

    在线程外create,然后Detach得到SOCKET句柄,传递给线程,在线程中Attach,再使用udp