http://topic.csdn.net/t/20020306/16/558836.html
winsock.pbl 事件的触发
在pb中使用 winsock.pbl 如何触发它的事件.如FD_ACCEPT,FD_READ,FD_WRITE,FD_CLOSE等.进行相应的处理,在pb里该如何做.
在windows的Open事件中,加入如下代码:
int a
sockSocket = create socketstream
a = ws.FD_ACCEPT+ws.FD_READ+ws.FD_WRITE //这里是你希望触发的winsock事件
sockSocket.WSAAsyncSelect(handle(this),1024,a) //1024是事件的消息号,对应的PB事件是pbm_custom01,1025对应pbm_custom02,直到pbm_custom075
因此接下来,给窗口定义一个事件ue_winsock,事件ID当然就选pbm_custom01,这样winsock事件就会触发你定义的ue_winsock了
在ue_winsock中:
iEvent = ws.WSAGetSelectEvent(message.longparm)
if iEvent = ws.FD_READ then
//收到数据
end if
if iEvent = ws.FD_WRITE and bWrite = TRUE then
//发送数据
end if
基本上就是这样了。
原来我也是用的winsock.pbl,但在大数据量传输上好像不太稳定,现在用MS的winsock控件了,很稳定。
sockSocket.WSAAsyncSelect(handle(this),1024,ws.FD_ACCEPT)
sockSocket.WSAAsyncSelect(handle(this),1025,ws.FD_READ)
sockSocket.WSAAsyncSelect(handle(this),1026,ws.FD_WRITE)