Toy trabajando con este proyecto
http://tech.reboot.pro/showthread.php?tid=86&highlight=socketsY le falta la opción de que el cliente pueda enviar datos al servidor.
El desarrollador añadio esto en el cliente
Private Sub Send(ByVal msg As String, ByVal clientSocket As Socket)
'get bytes to send
Dim sendBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(msg)
'begin sending (notice the client is sent as an AsyncState)
clientSocket.BeginSend(sendBytes, 0, sendBytes.Length, SocketFlags.None, New AsyncCallback(AddressOf OnSend), clientSocket)
End Sub
Private Sub OnSend(ByVal ar As IAsyncResult)
Dim client As Socket = ar.AsyncState
client.EndSend(ar)
End Sub
Esto al parecer funciona y digo al parecer porque aun no logro recibirlo en el servidor, el autor dice que para ello usen el mismo codigo que tiene el cliente, lo añado y sigue sin funcionar
Private Sub OnAccept(ByVal ar As IAsyncResult)
clientSocket = serverSocket.EndAccept(ar)
serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
AddClient(clientSocket)
'Línea añadida para recibir dato
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, New AsyncCallback(AddressOf OnRecieve), clientSocket)
End Sub
Private Sub OnRecieve(ByVal ar As IAsyncResult)
Dim client As Socket = ar.AsyncState
client.EndReceive(ar)
Dim bytesRec As Byte() = byteData
Dim message As String = System.Text.Encoding.ASCII.GetString(bytesRec)
Read(message)
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, New AsyncCallback(AddressOf OnRecieve), clientSocket)
End Sub
Delegate Sub _Read(ByVal msg As String)
Private Sub Read(ByVal msg As String)
If InvokeRequired Then
Invoke(New _Read(AddressOf Read), msg)
Exit Sub
End If
RichTextBox1.Text &= msg
End Sub
Depurandolo nunca entra en esos metodos unicamente cuando cierro el cliente es que el entonces entra y genera un error porque el socket esta cerrado y no puede leer nada.
Alguna idea..
Salu2