Visual Basic.NET - lectura de sockets

   
Vista:

lectura de sockets

Publicado por Karibu (3 intervenciones) el 18/07/2008 13:11:15
Hola
Estoy haciendo un programita con sockets. e funciona bien, cuando la trama que recibe esta en hexadecimal, pero cuando las pongo de forma literal como una cadena me da problemas.

Ej Hexadecimal
31 2C 32 30 30 38 2F 30 33 2F 30 33 2C 31 36 3A 35 34 3A 34 39 2C 34 31 2E 35 30 35 30 33 32 30 2C 4A 2C 30 30 32 2E 30 33 38 38 35 38 34 2B 45 2C 32 31 34 2B 33

Ej Normal
1,2008/03/03,16:54:49,41.5060320,N,002.0388584,E,214,3

El caso es que mi programa va a recibir siempre cadenas normales. ¿Sabe alguien como hacerlo?
El fragmento de codigo es este.

Private Sub Tratar_Datos()
' Esperamos a que nos llegue una petición
Try
sServidorCliente = Socket_Escucha.Accept()
' Tramitamos la petición
If sServidorCliente.Connected Then
' Crear hilo para el tratamiento
Hilo_Escucha = New System.Threading.Thread(AddressOf LeerSocket)
Hilo_Escucha.Start()
While Not (sServidorCliente Is nullSocket)
System.Threading.Thread.Sleep(500)
End While
End If
Catch e As Exception
Console.WriteLine("Socket.Accept Exception: " + e.ToString())
End Try
End Sub

Private Sub LeerSocket()
Dim datos As String
Dim sSocketLocal As System.Net.Sockets.Socket

' Liberar el socket del servidor
sSocketLocal = sServidorCliente
sServidorCliente = nullSocket

' Obtener los datos del socket
Dim bDatos(1024) As Byte
Dim index As Integer
Dim datosRecibidos As Integer

' Lectura de los datos del socket
index = 0
Try

Do
datosRecibidos = sSocketLocal.Receive(bDatos, index, 1024 - index, sSocketLocal.Available)
index += datosRecibidos
Loop While (datosRecibidos <> 0)
' Procesar el mensaje
datos = System.Text.Encoding.ASCII.GetString(bDatos)

sSocketLocal.Send(System.Text.Encoding.ASCII.GetBytes("1"))

Dim splitDatos = datos.Split(",")

' Cadena de conexión ODBC
'Dim cadenaConexion = "Data Source=TestGPS;Integrated Security=SSPI;Initial Catalog=tis-gremio"
'Dim cadenaConexion = "dsn=TestGPS;uid=sa;pwd=;"
Dim cadenaConexion = "dsn=TestGPS;uid=sa;pwd=1234"

'sSocketLocal.Send(System.Text.Encoding.ASCII.GetBytes("2"))
Dim oConn As New System.Data.Odbc.OdbcConnection(cadenaConexion)
Dim strsql = "Insert into dbo.tb_coordenadas (idgps,latitud,longitud,fecha,hora,ewindicator,altitud) values ( " & CInt(splitDatos(0)) & "," & (splitDatos(3)) & "," & splitDatos(5) & ", '" & CStr(splitDatos(1)) & " " & CStr(splitDatos(2)) & "','" & CStr(splitDatos(2)) & "','" & CStr(splitDatos(6)) & "'," & splitDatos(7) & ")"
Dim sqlCommand As New System.data.Odbc.OdbcCommand(strsql)

....

Muchas gracias


.....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder