Bueno, este post creo que va a ser un poco largo, asi que espero que haya alguien con paciencia y me heche un cable.

Bueno, la cuestión es que me estoy iniciando con esto de los "Sockets", estoy empezando con TcpClient y TcpServer.
Hice un pequeño TcpClient, creando una nueva clase que hereda de TcpClient, para asi poder usar más metodos que trae:
*************************************
PROYECTO CLIENTE
*************************************
Class ClienteTCP
Inherits TcpClient
Private HostServidor As String
Private Puerto As Int16
Private netStream As NetworkStream
Public Sub New(ByVal host As String, ByVal port As Int16)
HostServidor = host
Puerto = port
End Sub
Public Function EstaConectado() As Boolean
If Me.Active Then
Return True
Else
Return False
End If
End Function
Public Sub Conectar()
Try
Me.Connect(Me.HostServidor, Me.Puerto)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error al Conectar", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Public Sub EnviarDatos()
netStream = Me.GetStream
If netStream.CanWrite Then
Dim Bytes() As Byte = Encoding.UTF8.GetBytes("Probando")
netStream.Write(Bytes, 0, Bytes.Length)
Bytes = Encoding.UTF8.GetBytes("Otra movida")
netStream.Write(Bytes, 0, Bytes.Length)
Bytes = Encoding.UTF8.GetBytes("")
netStream.Write(Bytes, 0, Bytes.Length)
Else
Throw New Exception("Error al escribir")
Return
End If
End Sub
************
En el formulario
************
Private Sub Form1_Load(ByVal sender As System.Object, .....
Dim Cliente As ClienteTCP
Cliente = New ClienteTCP("localhost", 1500)
Cliente.Conectar()
If Cliente.EstaConectado Then
MsgBox("Todo bien")
Cliente.EnviarDatos()
End If
End Sub
*********************************************
FIN PROYECTO CLIENTE
*********************************************
Este TcpClient tiene que mandar información al servidor, la manda y el servidor la recibe sin problemas. Despues, si cierro la aplicación cliente, el servidor me dice que tiene un error.
"Información adicional: No se puede escribir datos de en la conexión de transporte."
**********************************************
PROYECTO SERVIDOR
**********************************************
Dim Servidor As TcpListener = New TcpListener(IPAddress.Any, 1500)
Private Sub Form1_Load(ByV......
Servidor.Start()
Dim client As TcpClient = Servidor.AcceptTcpClient()
Dim stream As NetworkStream = client.GetStream()
Dim i As Int32
Dim bytes(1024) As Byte
Dim data As String = Nothing
' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
Data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
MsgBox([String].Format("Received: {0}", data))
i = stream.Read(bytes, 0, bytes.Length)
End While
stream.close
End Sub
***********************************************
FIN PROYECTO SERVIDOR
***********************************************
Espero que no os parezca mucho lo que he puesto y que nun se me mosqueen esos moderadores . . . .
Bueno, pues tengo unas de dudillas, que por más que me peleo, no soy quién a resolver

1-. Al cerrar el cliente, ¿Como podría hacer que el servidor no me de ese error y que siga escuchando por posibles conexiones?
2-.
Dim Servidor As TcpListener = New TcpListener(IPAddress.Any, 1500)
Aqui le digo al servidor que escuche por cualquier IP que tenga el equipo, ¿Como podría indcar que solo escuche por una IP específica?
Bueno, pues eso es todo, nuevamente, si les parece que es una exageración de texto lo que he puesto aqui, les pido disculpas.
Y desde ya, muchas gracias por la buena ayuda ofrecida siempre acá.
Saludos