2013-01-09 78 views
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 

在此先感谢!

+0

你得到了什么错误,什么是堆栈跟踪? –

+0

没有错误。它只是不发送数据。我检查了其他程序中的字符串,如果它接收到数据但它没有。 –

+1

您是否使用调试器来查看是否输入了代码?此外,你没有检查Write的返回值,你应该是。 NetworkStream.Flush不做任何事情,应该删除。 – tcarvin

回答

0

我想出了这个问题。它是因为我只在连接过程中读取网络流。我应该修改我的代码以在连接完成后读取网络流。