- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 VB6 应用程序中使用 winsock
,这是我的代码:
Private Sub Form_Load()
With Winsock1
.Close
.RemoteHost = Hostip
.RemotePort = port number
.Connect
End With
End Sub
我的问题是,当我使用高速连接 (4G) 时,连接工作正常,但使用其他连接(如(3G,明智...)时,它返回以下消息:
the attempt to connect timed out
我该如何补救?
最佳答案
听起来您需要设置更长的连接超时时间。没有办法直接用控件来做到这一点。下面是一篇已停用的知识库文章中的修改示例。原始代码不包含 SO_SNDTIMEO 或 SO_RCVTIMEO 选项。
Option Explicit
' Error returned by Winsock API.
Const SOCKET_ERROR = -1
' Level number for (get/set)sockopt() to apply to socket itself.
Const SOL_SOCKET = 65535 ' Options for socket level.
Const IPPROTO_TCP = 6 ' Protocol constant for TCP.
' option flags per socket
Const SO_DEBUG = &H1& ' Turn on debugging info recording
Const SO_ACCEPTCONN = &H2& ' Socket has had listen() - READ-ONLY.
Const SO_REUSEADDR = &H4& ' Allow local address reuse.
Const SO_KEEPALIVE = &H8& ' Keep connections alive.
Const SO_DONTROUTE = &H10& ' Just use interface addresses.
Const SO_BROADCAST = &H20& ' Permit sending of broadcast msgs.
Const SO_USELOOPBACK = &H40& ' Bypass hardware when possible.
Const SO_LINGER = &H80& ' Linger on close if data present.
Const SO_OOBINLINE = &H100& ' Leave received OOB data in line.
Const SO_DONTLINGER = Not SO_LINGER
Const SO_EXCLUSIVEADDRUSE = Not SO_REUSEADDR ' Disallow local address reuse.
' Additional options.
Const SO_SNDBUF = &H1001& ' Send buffer size.
Const SO_RCVBUF = &H1002& ' Receive buffer size.
Const SO_ERROR = &H1007& ' Get error status and clear.
Const SO_TYPE = &H1008& ' Get socket type - READ-ONLY.
' TCP Options
Const TCP_NODELAY = &H1& ' Turn off Nagel Algorithm.
' linger structure
Private Type LINGER_STRUCT
l_onoff As Integer ' Is linger on or off?
l_linger As Integer ' Linger timeout in seconds.
End Type
'timeout structure
Private Type TIMEOUT_STRUCT
tv_sec As Long 'seconds
tv_usec As Long 'milliseconds
End Type
'Timeout options
Const SO_SNDTIMEO = &H1005& 'send timeout
Const SO_RCVTIMEO = &H1006& 'receive timeout
' Winsock API declares
Private Declare Function setsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal level As Long, ByVal optname As Long, optval As Any, ByVal optlen As Long) As Long
Private Declare Function getsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long
Private Sub Command1_Click()
' Read all the options and present in a message box.
Dim socket As Long
socket = Winsock1.SocketHandle
If socket = 0 Then
MsgBox "No Socket"
Else
MsgBox "Socket Options:" & vbCrLf & _
" SO_DEBUG: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_DEBUG)) & vbCrLf & _
" SO_ACCEPTCONN: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_ACCEPTCONN)) & vbCrLf & _
" SO_REUSEADDR: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_REUSEADDR)) & vbCrLf & _
" SO_KEEPALIVE: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_KEEPALIVE)) & vbCrLf & _
" SO_DONTROUTE: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_DONTROUTE)) & vbCrLf & _
" SO_BROADCAST: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_BROADCAST)) & vbCrLf & _
" SO_USELOOPBACK: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_USELOOPBACK)) & vbCrLf & _
" SO_LINGER: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_LINGER)) & vbCrLf & _
" SO_OOBINLINE: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_OOBINLINE)) & vbCrLf & _
" SO_DONTLINGER: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_DONTLINGER)) & vbCrLf & _
" SO_EXCLUSIVEADDRUSE: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_EXCLUSIVEADDRUSE)) & vbCrLf & _
" SO_SNDBUF: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_SNDBUF)) & vbCrLf & _
" SO_RCVBUF: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_RCVBUF)) & vbCrLf & _
" SO_ERROR: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_ERROR)) & vbCrLf & _
" SO_TYPE: " & CStr(GetSocketOption(socket, SOL_SOCKET, SO_TYPE)) & vbCrLf & vbCrLf & _
"TCP Options:" & vbCrLf & _
" TCP_NODELAY: " & CStr(GetSocketOption(socket, IPPROTO_TCP, TCP_NODELAY))
End If
End Sub
Private Sub Command2_Click()
Dim lResult As Long ' Results of 1st option.
Dim tout As TIMEOUT_STRUCT
If (Winsock1.Protocol = sckTCPProtocol) Then
tout.tv_sec = 10
tout.tv_usec = 0
lResult = setsockopt(Winsock1.SocketHandle, SOL_SOCKET, SO_SNDTIMEO, tout, LenB(tout))
If (lResult = SOCKET_ERROR) Then
MsgBox "Error setting SO_SNDTIMEO option: " & Translate_DLL_Error(Err.LastDllError)
Else
MsgBox "SO_SNDTIMEO option set."
End If
End If
End Sub
Public Function GetSocketOption(lSocket As Long, lLevel As Long, lOption As Long) As Long
Dim lResult As Long ' Result of API call.
Dim lBuffer As Long ' Buffer to get value into.
Dim lBufferLen As Long ' len of buffer.
Dim linger As LINGER_STRUCT
' Linger requires a structure so we will get that option differently.
If (lOption <> SO_LINGER) And (lOption <> SO_DONTLINGER) Then
lBufferLen = LenB(lBuffer)
lResult = getsockopt(lSocket, lLevel, lOption, lBuffer, lBufferLen)
Else
lBufferLen = LenB(linger)
lResult = getsockopt(lSocket, lLevel, lOption, linger, lBufferLen)
lBuffer = linger.l_onoff
End If
If (lResult = SOCKET_ERROR) Then
GetSocketOption = Err.LastDllError
Else
GetSocketOption = lBuffer
End If
End Function
Private Sub Form_Load()
Winsock1.Bind 8377 ' Set up socket enough to get nonzero socket. handle
End Sub
您可以在 https://support.microsoft.com/en-us/kb/237688 找到原始文章
关于vba - winsock 连接功能仅适用于高速连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322418/
我在我的 Xcode 项目目录中输入了以下内容: keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
假设我有一个像这样的 DataFrame(或 Series): Value 0 0.5 1 0.8 2 -0.2 3 None 4 None 5 None
我正在对一个 Pandas 系列进行相对繁重的应用。有什么方法可以返回一些打印反馈,说明每次调用函数时在函数内部进行打印还有多远? 最佳答案 您可以使用跟踪器包装您的函数。以下两个示例,一个基于完成的
我有一个 DataFrame,其中一列包含列表作为单元格内容,如下所示: import pandas as pd df = pd.DataFrame({ 'col_lists': [[1, 2
我想使用 Pandas df.apply 但仅限于某些行 作为一个例子,我想做这样的事情,但我的实际问题有点复杂: import pandas as pd import math z = pd.Dat
我有以下 Pandas 数据框 id dist ds 0 0 0 0 5 1 0 0 7 2 0 0
这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误: No signature of method: java.util.HashMap.getOrDefault(
您好,有人可以解释为什么在 remaining() 函数中的 Backbone 示例应用程序 ( http://backbonejs.org/examples/todos/index.html ) 中
我有两个域类:用户 class User { String username String password String email Date dateCreated
问题陈述: 一个 pandas dataframe 列系列,same_group 需要根据两个现有列 row 和 col 的值从 bool 值创建。如果两个值在字典 memberships 中具有相似
apporable 报告以下错误: error: unknown type name 'MKMapItem'; did you mean 'MKMapView'? MKMapItem* destina
我有一个带有地址列的大型 DataFrame: data addr 0 0.617964 IN,Krishnagiri,635115 1 0.635428 IN,Chennai
我有一个列表list,里面有这样的项目 ElementA: Number=1, Version=1 ElementB: Number=1, Version=2 ElementC: Number=1,
我正在编译我的源代码,它只是在没有运行应用程序的情况下终止。这是我得到的日志: Build/android-armeabi-debug/com.app4u.portaldorugby/PortalDo
我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令: df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x:
我想弄清楚如何使用 StateT结合两个 State基于对我的 Scalaz state monad examples 的评论的状态转换器回答。 看来我已经很接近了,但是在尝试申请 sequence
如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid whi
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
我是一名优秀的程序员,十分优秀!