Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
oIPEndPint = New IPEndPoint(IPAddress.Parse(strIP), strPort)
oSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
oSocket.Connect(oIPEndPint)
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, "|")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
Dim threadRecive As New Thread(AddressOf reciveThreadstart)
threadRecive.Start()
End Sub
Private Sub reciveThreadstart()
If oSocket.Connected Then
While True
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, "|")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
End While
End If
End Sub
Private Sub frmDL_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
End Sub
Private Sub frmDL_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
oSocket.Shutdown(SocketShutdown.Receive)
oSocket.Close()
End Sub
运行后关闭报:
未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。
其他信息: 您的主机中的软件放弃了一个已建立的连接是由这句bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)语句造成的.请问我要怎么办?
oIPEndPint = New IPEndPoint(IPAddress.Parse(strIP), strPort)
oSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
oSocket.Connect(oIPEndPint)
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, "|")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
Dim threadRecive As New Thread(AddressOf reciveThreadstart)
threadRecive.Start()
End Sub
Private Sub reciveThreadstart()
If oSocket.Connected Then
While True
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, "|")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
End While
End If
End Sub
Private Sub frmDL_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
End Sub
Private Sub frmDL_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
oSocket.Shutdown(SocketShutdown.Receive)
oSocket.Close()
End Sub
运行后关闭报:
未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。
其他信息: 您的主机中的软件放弃了一个已建立的连接是由这句bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)语句造成的.请问我要怎么办?
解决方案 »
- 请教 Adodc访问Access数据库时对象变量或with块变量错误?
- 谁知道数组的数据结构及其的含义,找不到呀
- 请回复“怎样把文本框的 PasswordChar 属性设置成像“●”这样的特殊字符?”这个帖子的朋友来领分
- autorun程序怎么做?
- 如何用data控件连接access数据库
- vb中使用"wininet.dll"下的API中怎么使用FtpOpenFile API函数
- 晕死了!这么简单的Sql我咋不知道该怎么写了?
- 正在修改VB6的安装程序在XP下安装路径的问题,setup1.vbp好像没有问题,好像是ExtractFileFromCab Lib "vb6stkit.dll"这个DLL的问题,谁有
- 请教:如何删除txt文件中重复的行
- 关于RichTextBox控件,以及字体设置对话框的几个问题!急!
- 软件开发,5000
- 新手提问:vb 水晶报表(超级简单)
oSocket.Shutdown(SocketShutdown.Receive)
oSocket.Close()
End Sub
在关闭窗口时断开连接
放到While循环中然后在循环中加上一句判断窗体是否要关闭的语句或者在 frmDL_Closing 里, oSocket.Shutdown之前加上一句结束reciveThreadstart线程,或等待其结束的语句
放到While循环中然后在循环中加上一句判断窗体是否要关闭的语句或者在 frmDL_Closing 里, oSocket.Shutdown之前加上一句结束reciveThreadstart线程,或等待其结束的语句
exit while
end if
用这句问题依旧.
你所说的"之前加上一句结束reciveThreadstart线程,或等待其结束的语"这个语句要如何写呢?
Dim threadRecive As New Thread(AddressOf reciveThreadstart)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
oIPEndPint = New IPEndPoint(IPAddress.Parse(strIP), strPort)
oSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
oSocket.Connect(oIPEndPint)
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, " ¦")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
' Dim threadRecive As New Thread(AddressOf reciveThreadstart)
fClosing=false
threadRecive.Start()
End Sub Private Sub reciveThreadstart()
While not fClosing
If oSocket.Connected Then
bytes = oSocket.Receive(oReciveByte, 1024, SocketFlags.None)
If bytes > 0 Then
strReceive = Encoding.ASCII.GetString(oReciveByte, 0, bytes)
aString = Split(strReceive, " ¦")
lblZGRSSX.Text = aString(1)
lblRGRSSX.Text = aString(2)
lblZGRS.Text = aString(3)
lblRGRS.Text = aString(4)
End If
End If
End While
End Sub
Private Sub frmDL_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
fClosing=true
threadRecive.Join()
oSocket.Shutdown(SocketShutdown.Receive)
oSocket.Close()
End Sub