你一定要把连接设置为nothing,从内存中清除这个对象。windows中的tcp/ip总是不如unix中的socket听话,似乎是timeout问题。资源的释放有些问题,尤其是从VB中使用。仅供参考
解决方案 »
- 如何用VB来解决一个excel的一个比较难的问题,高手请进(我在项目中遇到的,急),在线等
- 如何判断COM口发送信息已停止........
- 给客户做了一个管理系统,请教一下,我们公司这种设计算是规范吗?[与客户在这点上有点争议]
- 10
- Microsoft Outlook
- 一个关于窗体激活的问题
- 图片转文字的软件,谢谢帮我测试一下
- 如何使文本框的长度与SQLSERVER的字段一致?
- 计算1-1/2+1/3-1/4+……+(-1)^n-1*1/n的值,要N在一个输入框中输入,给分20
- 寻求解决方案,请大家帮忙!
- 想请问我点网页上的连结,打一个新页面,这个新页面是不是前一个网页的子窗口??
- 任务栏图标的问题,各位大侠,救救急!
在winsock.close语句之后加上
for iLoop = 0 to 10000
DoEvents
Next iLoop
for iLoop = 0 to 10000
DoEvents
Next iLoop
是什么意思?好像还是无法解决问题,倒底要如何使用?
客户端用到过winsock的Listen方法吗?
VB的winsock不会做得这么不周到吧,联上了就关不了了吧!
还请赐教?
我也搞不清楚,为何会这样!
在服务器端Listen
然后在客户端connect
连接成功后发送数据...
一切都没问题,就是退出程序后,如果再启动程序进行Connect的话就发生了这种事!!!
If tcpServer.State <> sckClosed Then
tcpServer.Close
end if
Dim i As Integer
Dim blnOK As Boolean
For i = 1 To Winsock1().UBound
If Winsock1(i).State = sckClosed Then
blnOK = True
Exit For
End If
Next i
If blnOK = False Then
i = Winsock1().UBound + 1
Load Winsock1(i)
End If
Winsock1(i).Accept requestID
End Sub
初始化是用:
With Winsock1(0)
.Protocol = sckTCPProtocol
.RemotePort = 1500
.LocalPort = 1501
.Listen
End With
Command1
Text1
WinSock1Private Sub Command1_Click()
Text1.Text = ""
Winsock1.RemoteHost = "10.1.1.100"
Winsock1.RemotePort = 1501
Winsock1.Connect
End SubPrivate Sub Winsock1_Connect()
Text1.Text = "Connected."
End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox Number & Description
End Sub
解决方法:1 检查程序,确保在退出时,已经关闭了连接(需要在服务器端关闭,用WINSOCK(INDEX).CLOSE,客户端不要理它)。
2 有没有以无模式的方法打开过一个窗体,而在退出时,这个窗体是不可见的,但并没有关闭。可以用END语句强行结束程序。
3 因为是客户端,不要指定LOCALPORT,这样即使你同时运行十几个客户端,也不会发生地址冲突(这一点可以彻底解决问题)。