winsock.index 是啥?

Posted

技术标签:

【中文标题】winsock.index 是啥?【英文标题】:What is winsock.index?winsock.index 是什么? 【发布时间】:2012-11-06 17:41:55 【问题描述】:

我得到了一个 VB6 程序来转换为 .NET,虽然大部分 VB6 细节我已经能够通过谷歌搜索找到,但有一个我只是不知道。使用了 Winsock,但转换实用程序将其替换为 AxMSWinsockLib.AxWinsock。旧代码引用了一个索引属性,AxMSWinsockLib.AxWinsock 显然没有,但我不知道它在这里试图做什么。有什么想法吗?

Public Function PortsOpen(ByRef colWinsock As Collection, ByRef objWinsock As Winsock, ByVal LocalIPAddress As String) As Boolean

Dim Counter As Long
Dim sWS() As String

'Initial to open com. port

Counter = 0

If colWinsock.Count >= objWinsock.Index + 1 Then
    sWS = colWinsock.Item(objWinsock.Index + 1)

【问题讨论】:

哦,和Control Arrays有关系吗? “您可以通过将一个或多个相同类型的控件命名为相同名称并将数组中每个控件的 Index 属性设置为非负值(即控件数组的索引通常从 0 到比数组中控件数少一)。" @pst 我相信你是对的;您应该将此作为答案发布。 【参考方案1】:

在 VB6 中,您可以拥有一个控件数组,然后使用索引引用它们。 .Net 中不再存在这种行为

我相信在你的情况下,旧的 VB6 使用 winsock 数组来促进与其他对等方的通信。

例如,如果在 VB6 中原来的窗体是通过添加一个 WinSock 控件来设计的,然后将其名称更改为 mySock,然后手动将其 Index 属性值设置为 0,则它变为 mySock(0)

在程序的后面,您需要做的就是制作另一个控件副本

Dim currentNumberOfWinSocks as Integer
currentNumberOfWinSocks = mySock.UpperBound
Load mySock(currentNumberOfWinSocks + 1)

因此,如果要将此逻辑更改为 .Net,则必须通过完全从代码端声明 Winsock 变量数组来解决此问题,而不需要中继设计控制。

【讨论】:

以上是关于winsock.index 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

windows里面netsh winsock reset作用是啥?

C++中用winsock进行通信的具体步骤是啥样呢?

socket编程在windows和linux下的区别是啥?

(解析主机)是啥意思?

winsock2的介绍

VBA中的winsock 和VB中的winsock可以互连吗