You are declaring both your TcpClient and your NetworkStream as local variables in the Form_Load subroutine, they will go out of scope once that subroutine finishes and will be marked for garbage collection. You need to declare them at class level, and remember that it is not a good practise to give the variable the same name as the class. Here's how I'd do it:

VB.Net Code:
  1. Public Class Form1
  2.     Private client As System.Net.Sockets.TcpClient
  3.     Private clientStream As NetworkStream
  4.  
  5.     Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.         client = New System.Net.Sockets.TcpClient("192.168.55.4", 8000)
  7.         clientStream = client.GetStream()
  8.     End Sub
  9.  
  10.     Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.         If NetworkStream.CanWrite And NetworkStream.CanRead Then
  12.             If TextBox1.Text <> "" Then
  13.                 Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(TextBox1.Text)
  14.                 NetworkStream.Write(sendBytes, 0, sendBytes.Length)
  15.             End If
  16.         End If
  17.     End Sub
  18. End Class