0
我在尝试通过网络流写入时遇到问题。无法通过TCP网络流写入
当我在这里按下这个按钮时,我可以成功写入到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不做任何事情,应该删除。 – tcarvin