特定のサーバーからメッセージを送信する以下のコードを使用しています
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
send("Hello there")
TextBox1.Text = TextBox1.Text + "Send Successful"
End Sub
Public Sub send(ByVal data As String)
Dim tcpClient As New TcpClient()
Try
tcpClient.Connect("10.xxx.xx.xx", 7000)
TextBox1.text = TextBox1.Text + "Conneecte"
Catch e As Exception
Console.WriteLine(e)
End Try
If tcpClient.Connected Then
Dim networkStream As NetworkStream = tcpClient.GetStream()
Dim streamWriter As New StreamWriter(networkStream)
Console.WriteLine("Messege {0} to {1}", data, tcpClient.Client.RemoteEndPoint)
streamWriter.WriteLine(data)
streamWriter.Flush()
tcpClient.Close()
End If
End Sub
そして、送信は成功します。
そして、以下のコードは別のシステムから読み取っています。そして、コードはdo whileループでハングします
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim tcpClient As New System.Net.Sockets.TcpClient()
Try
tcpClient.Connect("10.xxx.xx.xx", 7000)
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite And networkStream.CanRead Then
'Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("$gimme")
'networkStream.Write(sendBytes, 0, sendBytes.Length)
' 'Read the NetworkStream into a byte buffer.
Do
Loop Until networkStream.DataAvailable
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
Dim returndata As String = Encoding.ASCII.GetString(bytes)
''Label1.Text = returndata
tcpClient.Close()
Else
If Not networkStream.CanRead Then
tcpClient.Close()
Else
If Not networkStream.CanWrite Then
tcpClient.Close()
End If
End If
End If
Catch ex As Exception
'sLabel1.Text = "Exception Caught"
End Try
End Sub
そして、コードはここの読み取り部分でハングします
networkStream.DataAvailable までループする
ここで何が間違っていますか?