我的vb在写wisock时,常常在调试时出现卡死的现象,怎么解决?

解决方案 »

  1.   

    你是用Winsock的API吗?如果是这样可能你没有用到异步操作吧。
    比如UDP接收信息时可以用recvfrom来就收信息,但是,如果直接用
    recvfrom来等待网络信息的到来,VB的整个程序会像卡死一样,通常
    在VC里这种情况没事,但VB就是连窗口都动不了。
    如果在VB里要接收网络信息,建议使用异步操作的办法来接收网络数据。
    其实概念很简单,就是建立一个窗口,然后设置这个窗口可以收到网络
    事件的系统信息。
    然后用钩子拦截这个窗口的消息,在钩子函数中判断是否有FD_READ、
    FD_WRITE、FD_CLOSE...等信息到达。
    如果信息到达就触发相应的事件就可以了。在事件发生时再使用recvfrom
    来接收网络数据。
    Microsoft的Winsock控件就是这样工作的。当它收到FD_READ信息后,
    就会触发DataArrival事件,程序员也会在DataArrival事件中使用
    GetData方法取得数据,这个GetData方法其实就是使用了recvfrom来
    收数据的,只是使用recvfrom的时间不是一开始就使用,而是收到系统
    的FD_READ信息后再使用,这样一来就不会卡了。