加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB:用Winsock控件数组作服务的实现过程范例

发布时间:2020-12-17 08:07:27 所属栏目:百科 来源:网络整理
导读:Visual Basic Code Private Type SockServerInfo Enabled As Boolean End Type Dim Server ( ) As SockServerInfo Private Sub Form_Load ( ) CreateServer End Sub Private Sub Winsock1_ConnectionRequest ( _ Index As Integer,_ ByVal requestID As Long
Visual Basic Code
PrivateTypeSockServerInfo
EnabledAsBoolean
EndType
DimServer ( ) AsSockServerInfo

PrivateSubForm_Load ( )
CreateServer
EndSub


PrivateSubWinsock1_ConnectionRequest ( _
IndexAsInteger,_
ByValrequestIDAsLong)
IfWinsock1 ( Index ) .State <>0ThenWinsock1 ( Index ) .Close
Winsock1 ( Index ) .Accept requestID
CreateServer
EndSub

PrivateSubWinsock1_DataArrival ( IndexAsInteger,ByValbytesTotalAsLong)
DimNetWorkStringAsString
Winsock1 ( Index ) .GetData NetWorkString,vbString,bytesTotal
Print"Index "& Index &" 收到数据:"& NetWorkString
Winsock1 ( Index ) .SendData"转发回去的数据"
EndSub

PrivateSubWinsock1_Error ( IndexAsInteger,_
ByValNumberAsInteger,_
DescriptionAsString,_
ByValScodeAsLong,_
ByValSourceAsString,_
ByValHelpFileAsString,_
ByValHelpContextAsLong,_
CancelDisplayAsBoolean)
CancelDisplay = True
Winsock1_Close Index
EndSub

PrivateSubWinsock1_Close ( IndexAsInteger)
StopServer Index
EndSub

PrivateSubCreateServer ( )
DimServerMaxCountAsLong
DimXAsLong
DimIsHaveFalseAsLong
OnErrorResumeNext
ServerMaxCount = UBound( Server )
IfErr.Number <>0Then
ServerMaxCount = 0
ReDimServer ( ServerMaxCount )
Else
IsHaveFalse = 0
ForX = 0ToServerMaxCount
IfServer ( X ) .Enabled = FalseThen
ServerMaxCount = X
IsHaveFalse = 1
ExitFor
EndIf
NextX
IfIsHaveFalse = 0Then
ServerMaxCount = ServerMaxCount +1
ReDimPreserve Server ( ServerMaxCount )
EndIf
Load Winsock1 ( ServerMaxCount )
EndIf
Winsock1 ( ServerMaxCount ) .LocalPort = 60000
Winsock1 ( ServerMaxCount ) .Listen
Server ( ServerMaxCount ) .Enabled = True
EndSub

PrivateSubStopServer ( IndexAsInteger)
DimServerMaxCountAsLong
IfWinsock1 ( Index ) .State <>0ThenWinsock1 ( Index ) .Close
OnErrorResumeNext
ServerMaxCount = UBound( Server )
IfIndex = ServerMaxCountThen
IfIndex = 0Then
EraseServer
Else
Unload Winsock1 ( Index )
ReDimPreserve Server ( ServerMaxCount -1)
EndIf
Else
Unload Winsock1 ( Index )
Server ( Index ) .Enabled = False
EndIf
EndSub

其实概念很简单,主要是处理好控件数组的创建和释放就可以了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读