我正在使用以下代码动态创建WinSock控件,并使用它连接到服务器:
Licenses.Add "MSWinsock.WinSock.1"
Controls.Add "MSWinsock.WinSock.1", "s1"
s1.RemoteHost = "irc.netsplit.de"
s1.RemotePort = "6667"
s1.Connect
但是我得到“错误424:需要对象。”,突出显示“s1.RemoteHost ...”,我该如何解决这个问题?应该从之前的行添加控件吗?
感谢。
答案 0 :(得分:2)
最简单的方法是将套接字控件转储到表单中,以消除导入许可证的需要。得到严格的打字,然后;
Controls.Add "MSWinsock.WinSock.1", "s1"
Dim s1 As Winsock: Set s1 = Controls("s1")
s1.RemoteHost = "irc.netsplit.de"
或许array of sockets可能是您的追随者?
答案 1 :(得分:1)
抱歉我的英语不好......
您可以创建一系列WinSock控件。为此,您需要添加一个控件来形成并将其index属性赋值为0.然后您可以使用如下语句:
Load WinSock1(5)
其中WinSock1是控件的名称(之前添加到表单中),5是新控件的数组中的索引(它可以是变量)。这意味着您拥有相同控件的多个“副本”,您可以单独操作每个“副本”。之后,您可以使用此控件进行操作:
WinSock1(5).LocalPort = 80
Winsock1(5).Listen
并回复此类事件:
Private Sub WinSock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
WinSock1(Index).Close
WinSock1(Index).Accept(requestID)
End Sub
在这种情况下,索引是数组中控件的索引,因此您不需要自己跟踪控件。
希望这会有所帮助......玩得开心! :)
答案 2 :(得分:0)
您没有声明s1
的变量。您只是将控件添加到具有该名称的表单中。您可以使用以下方法检索它:
Dim s1 As Object
s1 = Controls("s1")
我的VB6很生疏,所以我不确定,这是Object
,你可以有意义地使用它。