Foros del Web » Programación para mayores de 30 ;) » .NET »

Sockets Asyncronos (VB.NET WinForms)

Estas en el tema de Sockets Asyncronos (VB.NET WinForms) en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/07/2005, 18:14
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Sockets Asyncronos (VB.NET WinForms)

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.
__________________
Charlie.

Última edición por chcma; 13/07/2005 a las 06:08
  #2 (permalink)  
Antiguo 13/07/2005, 09:34
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Creo que el problema está n'l cliente, pero no estoy seguro.

¿Qué opinan?
__________________
Charlie.
  #3 (permalink)  
Antiguo 15/07/2005, 02:14
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Bueno, definitvamente el problema está en el cliente, ya que probe un cliente bajado de codeproject y tira perfectamente.

¿Alguien podría decirme que puñetas hago mal en el Cliente, POR FAVOR?, antes siempre me había funcionado asi, usandolo contra un TcpListener, quizás ahora, por ser un socket tenga k comunicarme con el de otra forma.

Por favor, haber si alguien amable puede hecharme un cable.

Saludos.
__________________
Charlie.
  #4 (permalink)  
Antiguo 19/10/2005, 14:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 1
Antigüedad: 19 años
Puntos: 0
Socket

Mister revisa este post que te aclarara todo el tema.

http://www.elguille.info/colabora/pu...cketsVBNET.htm
  #5 (permalink)  
Antiguo 24/10/2009, 07:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sockets Asyncronos (VB.NET WinForms)

Estaria bueno poner si este problema fue resuelto, yo probe el link que sugieren y tiene graves fallas, de que por algun extraño motivo el VB NET 2005 tira un error extraño y se cierra.
  #6 (permalink)  
Antiguo 25/10/2009, 05:20
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Sockets Asyncronos (VB.NET WinForms)

Al final lo hice con Sockets, y me olvidé del TcpListener, que era donde estaba el problema.
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:41.