Hola buenas noches !!!
Verán, mi intención es crear un servidor de Sockets, el cual, reciba a cualquier cliente y gestione en el acto lo que recibe de cada cliente (Cosa que con el TcpListener es casi imposible).
Bien, lo tengo casi hecho, mi servidor de Sockets, recibe a los clientes, y cada cliente manda un Mensaje, y este servidor lo procesa correctamente. Sin embargo, el cliente cuando manda un segundo Mensaje (Sin Haberse deconectado), el servidor NI LO PROCESA.
Estoy desesperado, llevo con esto SIGLOS, me voy a tomar la libertad de poner mi código fuente, para ver si algún guru puede hecharme un cable y decirme por que si procesa mi primer mensaje pero no los demás.
Si algun moderador decide quitar el post, por poner tanto texto, lo entenderé, pero con lo desesperado k estoy, nun tengo ná k perder.
**********************
SERVIDOR SOCKETS
**********************
Imports System.Text
Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Inherits System.Windows.Forms.Form
CODIGO GENEREADO ....
'Objetos
Private objHebra As Thread
Private objSocket As SocketAndBuffer
Private objServidor As TcpListener
Private Sub btnEscuchar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEscuchar.Click
objHebra = New Thread(AddressOf Escuchar)
objHebra.IsBackground = True
objHebra.Start()
End Sub
Private Sub Escuchar()
objServidor = New TcpListener(IPAddress.Any, 2040)
objServidor.Start()
While True
objSocket = New SocketAndBuffer
objSocket.Socket = objServidor.AcceptSocket
objSocket.Socket.BeginReceive(objSocket.Buffer, 0, objSocket.Buffer.Length, SocketFlags.None, _
AddressOf RecibiendoAsync, objSocket)
End While
End Sub
Private Sub RecibiendoAsync(ByVal ar As IAsyncResult)
Dim objSocketInd As SocketAndBuffer
objSocketInd = CType(ar.AsyncState, SocketAndBuffer)
Dim BytesRecibidos As Integer
BytesRecibidos = objSocketInd.Socket.EndReceive(ar)
If BytesRecibidos > 0 Then
Dim DatoRecibido As String
DatoRecibido = Encoding.ASCII.GetString(objSocketInd.Buffer, 0, BytesRecibidos)
Thread.Sleep(5000)
lbLista.Items.Add(DatoRecibido)
Array.Clear(objSocketInd.Buffer, 0, objSocketInd.Buffer.Length)
objSocketInd.Socket.BeginReceive(objSocketInd.Buff er, 0, objSocketInd.Buffer.Length, SocketFlags.None, AddressOf RecibiendoAsync, objSocketInd)
End If
End Sub
End Class
Public Class SocketAndBuffer
Public Socket As Socket
Public Buffer(1024) As Byte
End Class
***************************
CLIENTE SOCKETS
***************************
Imports System.Net
Imports System.Net.Sockets
Imports System.Text.Encoding
Public Class Form1
Inherits System.Windows.Forms.Form
Private objSock As TcpClient
Private Sub btnConecta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConecta.Click
objSock = New TcpClient
objSock.Connect("localhost", 2040)
End Sub
Private Sub btnEnvia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnvia.Click
Dim bytes(1024) As Byte
bytes = System.Text.Encoding.ASCII.GetBytes("Hola")
Dim StreamCliente As NetworkStream
StreamCliente = objSock.GetStream
StreamCliente.Write(bytes, 0, bytes.Length)
StreamCliente.Flush()
End Sub
End Class
********************
FIN
********************
En fin, si puede alguien ayudarme, le estaré enteramente agradecido. Desde ya, muchas gracias.
Saludos compadres.