1、首先定义一个winsock控件数组 2、winsock(0).listen 3、有新的连接时: dim n as integer dim i as integer dim s as integers=-1 n=winsock.ubound '取得可供引用的最大下标 if n>1 then for i=1 to n-1 if winsock(i).stat=sckclosed then s=i exit for end if next end ifif s<0 then '表示未有处于空闲连接状态的控件 load winsock(n) s=n end ifwinsock(s).accept4、在winsock(index)的close事件中加入如下代码if index<>0 then winsock(index).close end if
楼主,这个例子有也很长不好贴,你可以到,www.21code.com上找找,一定有例子的。
按你说的,专门用一个winsocket A来监听连接,而用一个动态的winsocket数组 B来处理连接,即有新的连接来了后,A把该连接交给B中的一个处理,即先 load B(i)你能说说怎么维护这个socket数组吗,会不会因为连接增多,这个数组越来越大?谢谢。
dim a as winds
连接数多的话那用的数组控件肯定会大的了,但你可以把一些已断开的连接所占用的数组控件UNLOAD掉!这样就不会那么严重了
我想问一下,比如最开始是ws(0),后来又load了三个:load ws(1)
load ws(2)
load ws(3)
这时该数组一共有四个元素了(0~3)
后来我发现ws(2)已经不用了,我就调用unload ws(2),那么请问:
1、ws这个数组现在一共有几个元素,即ws.count等于几?
2、以前索引为3的元素现在的索引是2还是3?谢谢
2、winsock(0).listen
3、有新的连接时:
dim n as integer
dim i as integer
dim s as integers=-1
n=winsock.ubound '取得可供引用的最大下标
if n>1 then
for i=1 to n-1
if winsock(i).stat=sckclosed then
s=i
exit for
end if
next
end ifif s<0 then '表示未有处于空闲连接状态的控件
load winsock(n)
s=n
end ifwinsock(s).accept4、在winsock(index)的close事件中加入如下代码if index<>0 then
winsock(index).close
end if