【发布时间】:2013-01-20 22:54:21
【问题描述】:
我在尝试通过网络流写入时遇到问题。
当我在这里按下这个按钮时,我可以成功写入tcp流并且程序的另一部分成功接收到数据。
Dim ClientSocket As TcpClient
Private Sub btnConnect_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles btnConnect.MouseClick
ClientSocket = New TcpClient
ClientSocket.Connect(frmNetworkSettings.txtServerIPAddress.Text, CInt(frmNetworkSettings.txtFileSharingPort.Text))
Dim NetworkStream As NetworkStream = ClientSocket.GetStream()
If NetworkStream.CanRead And NetworkStream.CanWrite Then
Dim SentData As Byte()
SentData = Encoding.ASCII.GetBytes(Username & Chr(32) & "is connected." & Environment.NewLine)
NetworkStream.Write(SentData, 0, SentData.Length())
NetworkStream.Flush()
End If
End Sub
但是当我按下下面这个按钮时,按下上面的按钮后,我无法在tcp网络流上写入,并且网络上的其他程序没有收到数据。
Private Sub btnDisconnect_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles btnDisconnect.MouseClick
Dim NetworkStream As NetworkStream = ClientSocket.GetStream()
If NetworkStream.CanRead And NetworkStream.CanWrite Then
Dim SentData As Byte()
SentData = Encoding.ASCII.GetBytes(Username & Chr(32) & "is disconnected." & Environment.NewLine)
NetworkStream.Write(SentData, 0, SentData.Length())
NetworkStream.Flush()
End If
End Sub
其他详情:
这是在其他程序上接收数据的部分。
Private Sub ConnectionTimer_Tick(sender As Object, e As System.EventArgs) Handles ConnectionTimer.Tick
Try
If Listener.Pending Then
ClientSocket = Listener.AcceptTcpClient
Dim ByteData(ClientSocket.ReceiveBufferSize) As Byte
Dim NetworkStream As NetworkStream = ClientSocket.GetStream
Dim LogMessage As String = String.Empty
NetworkStream.Read(ByteData, 0, CInt(ClientSocket.ReceiveBufferSize))
LogMessage = Encoding.ASCII.GetString(ByteData)
DisplayLogMessage(LogMessage)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
提前致谢!
【问题讨论】:
-
你得到什么错误,堆栈跟踪是什么?
-
没有错误。它只是不发送数据。我检查了另一个程序上的字符串是否接收到数据但没有。
-
你有没有用调试器走过去看看你是否输入了代码?此外,您没有检查 Write 的返回值,您应该检查。并且 NetworkStream.Flush 没有做任何事情,应该被删除。
-
好的,但是如何检查 Write 的值?
标签: .net vb.net tcpclient networkstream