winsock,奇怪的dataarriva事件...
dhhm 2008-03-29 08:24:08 利用winsock控件,想做个ftp的程序,请看代码
其中:
chb_count为全局变量,
winsock2为ftp建立的数据链路,
以下代码,是winsock2的dataarrival的事件代码
dim get_data as string
chb_count = chb_count + 1
if winsock2.state=sckConnected then
winsock2.GetData( ref get_data)
text1.text=text1.text+get_data
else
messagebox(string(winsock2.state),string(BytesTotal))
end if
在接收了一个很短的信息后(远远不足8k),chb_count的值为2,也就是说,dataarrival事件被触发了两次。
其中一次,触发了else条件里的语句winsock2.state=sckClosing, BytesTotal=0
代码写成这样,也是我在调试程序时,发现有点异样,用来检查情况的。
请高手能否解释一下这个现象?
原本就想简单写成:
winsock2.GetData( ref get_data)
text1.text=text1.text+get_data
可是程序有时候报错,也就是winsock2.state=sckClosing时,也触发了dataarrival事件,
而winsock2.state=sckClosing时,执行getdata方法是不可以的.