No se que pasa pero no me funciona :S es como si los datos cambiaran mira te pongo el codigo que utilizo
Uso las clases de Elguille sockets modificadas:
Solo pondre las cosas que cambie:
----------------
Clase Cliente
----------------
Código vb:
Ver originalPublic Sub EnviarDatos(ByVal Datos() As Byte)
Dim BufferDeEscritura() As Byte
BufferDeEscritura = Datos
If Not (Stm Is Nothing) Then
'Envio los datos al Servidor
Stm.Write(BufferDeEscritura, 0, BufferDeEscritura.Length)
End If
End Sub
'Envia los datos como array Byte()
Código vb:
Ver originalPrivate Sub LeerSocket()
Dim BufferDeLectura() As Byte
While True
Try
BufferDeLectura = New Byte(65535) {}
'Me quedo esperando a que llegue algun mensaje
Stm.Read(BufferDeLectura, 0, BufferDeLectura.Length)
'Genero el evento DatosRecibidos, ya que se han recibido datos desde el Servidor
RaiseEvent DatosRecibidos(BufferDeLectura)
Catch e As Exception
Exit While
End Try
End While
'Finalizo la conexion, por lo tanto genero el evento correspondiente
RaiseEvent ConexionTerminada()
End Sub
'Lee los datos como array byte()
Código vb:
Ver originalPublic Event DatosRecibidos(ByVal datos() As Byte)
'Variable
-------------------
Clase Servidor
-------------------
Código vb:
Ver originalPublic UltimosDatosRecibidos() As Byte 'Ultimos datos enviados por el cliente
Código vb:
Ver originalPublic Function ObtenerDatos(ByVal IDCliente As Net.IPEndPoint) As Byte()
'Una función del tipo Byte()
Código vb:
Ver originalPublic Sub EnviarDatos(ByVal IDCliente As Net.IPEndPoint, ByVal Datos() As Byte)
Dim Cliente As InfoDeUnCliente
'Obtengo la informacion del cliente al que se le quiere enviar el mensaje
Cliente = Clientes(IDCliente)
'Le envio el mensaje
Cliente.Socket.Send(Datos)
End Sub
'Envio los datos de forma array Byte()
-----------------------
Aplicación Servidor
-----------------------
Código vb:
Ver originalPrivate Sub WinSockServer_DatosRecibidos(ByVal IDTerminal As System.Net.IPEndPoint) Handles WinSockServer.DatosRecibidos
'Muestro quien envio el mensaje
IDTerminal_Jugador_Actual = IDTerminal
Dim Datos() As Byte = WinSockServer.ObtenerDatos(IDTerminal)
Log_Servidor("El serivodor ha recibo los datos correctamente")
WinSockCliente.EnviarDatos(Datos)
End Sub
Código vb:
Ver originalPrivate Sub WinSockServer_NuevaConexion(ByVal IDTerminal As System.Net.IPEndPoint) Handles WinSockServer.NuevaConexion
'Muestro quien se conecto
Log_Servidor("Nuevo Jugador intentando acceder al servidor desde la IP: " & IDTerminal.Address.ToString & ",Puerto: " & IDTerminal.Port)
WinSockCliente.IPDelHost = "localhost"
WinSockCliente.PuertoDelHost = 3723
WinSockCliente.Conectar()
End Sub
Código vb:
Ver originalPublic Sub EnviarDatos(ByVal Datos() As Byte)
Dim Cliente As InfoDeUnCliente
'Recorro todos los clientes conectados, y les envio el mensaje recibido
'en el parametro Datos
For Each Cliente In Clientes.Values
EnviarDatos(Cliente.Socket.RemoteEndPoint, Datos)
Next
End Sub
----------------------
Aplicación Cliente
----------------------
Código vb:
Ver originalPrivate Sub WinSockCliente_DatosRecibidos(ByVal datos() As Byte) Handles WinSockCliente.DatosRecibidos
Log_Cliente("El cliente ha enviado los datos bien")
WinSockServer.EnviarDatos(datos)
End Sub
Código vb:
Ver originalPrivate Sub WinSockCliente_ConexionTerminada() Handles WinSockCliente.ConexionTerminada
Log_Cliente("La conexión con la IP: " & IDTerminal_Jugador_Actual.Address.ToString & ", ha finalizado")
WinSockServer.Cerrar(IDTerminal_Jugador_Actual)
End Sub
Y esto es todo, sabes donde puedo estar fallando?