这段时间看了一下SOCK方面的API,我在使用recvfrom读取UDP数据的时候出现程序被卡住的状态。
当然信息来了一样接收得到信息,但是程序像卡住的状态的确不是很好。
后来看了一下CSocketMaster这个范例。
好像是创建了一个窗口用来接收信息,当FD_READ信息到达时才用recvfrom函数
接收信息。但是这个信息这样处理好象不对,收不到需要的Sock信息FD_READ...
Dim SockInfohWnd As Long, r As Long
SockInfohWnd = CreateWindowEx(0&, "STATIC", "SOCKET_WINDOW", 0&, 0&, 0&, 0&, 0&, 0&, 0&, App.hInstance, ByVal 0&)
r = GetWindowLong(SockInfohWnd, GWL_WNDPROC)
r = SetWindowLong(SockInfohWnd, GWL_WNDPROC, AddressOf WndProc)
...Public Sub WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
   Debug.Print "收到消息:" & uMsg & " " & wParam 
   Select Case uMsg
   Case RESOLVE_MESSAGE
   Case SOCKET_MESSAGE
            Select Case wParam
            Case FD_CONNECT:          '连接成功(用于TCP协议)
            Case FD_WRITE:            '发送信息
            Case FD_READ:             '收到数据
            Case FD_ACCEPT:           '收到连接请求(用于TCP协议)
            Case FD_CLOSE:            '关闭连接(用于TCP协议)
            End Select
   End Select
End Sub具体该如何处理这个窗口呢?怎样才能在WndProc里收到Sock的信息呢?原理是什么?有高手马上加分