Ver mensaje
  #182  
Antiguo 27-10-2014, 16:38
Avatar de gilinas
gilinas gilinas esta desconectado
Corsario
 
Registrado: 11-12-2006
Localización: Indignao por los Golfos de Valencia
Edad: 64
Mensajes: 1,759
Agradecimientos que ha otorgado: 849
Recibió 754 Agradecimientos en 335 Mensajes
Sexo:
Predeterminado Respuesta: Re: Respuesta: SailPi Navegando con Raspberry Pi

Cita:
Originalmente publicado por Diavolo Ver mensaje
Con ShippingExplorer he hablado y mas que hablado, que solo acepta conexiones UDP, no TCP. Ya le comenté a ellos, que un servidor puerto de serie, puedo enviar datos a varias IP en modo TCP o UDP, pero Todas con el mismo tipo de conexion, por ello usaba un servidor de serie unica y exclusivamente para mi como servidor de serie TCP, para IPad, PC, y de mas, otro para enviar UDP como cliente a Marinetraffic, ShippingExplorer y el de Localizatodo aparte para ellos.

Ahora voy a poner la Fresa, y el servidor de Localizatodo, y todo lo demás va a ir fuera.

Al final voy a optar por poner Kplex TCP en modo server a la fresa, y Marinetraffic (que ya hemos probado que funciona), y desde casa a ShippingExplorer. Localizatodo voy a mantener el Servidor de ellos (Micro-Pc), de todas formas es el mas pequeño que tengo y fácil de ocultar.
Hola
He estado pensando un poco y la solución podría ser:
  1. Poner el kplex para que envíe por TCP como server
  2. hacer un programa que se conecte como cliente al TCP del kplex y que lo reenvíe por UDP a la dirección y puerto de ShippingExplore
El programa (en python) podría ser algo así:

Código:
#!/usr/bin/python 

import socket
import argparse

parser = argparse.ArgumentParser(description='Reenvia por UDP lo que recibe por TCP')
parser.add_argument('UDPhost', 
                   help='host destino del UDP')
parser.add_argument('UDPport', type=int,
                   help='puerto UDP')
parser.add_argument('--TCPhost', default='localhost', 
                   help='host fuente TCP (localhost por defecto)')
parser.add_argument('--TCPport', type=int, default=10110,
                   help='puerto TCP (10110 por defecto)')
args = parser.parse_args()

tcps = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcps.connect((args.TCPhost, args.TCPport))
tcpin=tcps.makefile()
udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
    lineaNMEA=tcpin.readline()
    udps.sendto(lineaNMEA, (args.UDPhost, args.UDPport))
tcpin.close
tcps.close
udps.close
lo salvas a un fichero.py (ShippingExplore.py por ejemplo)
y lo invocas como:

>python ShippingExplore.py UDPhost UDPport
donde:
UDPhost es el servidor de ShippingExplore y
UDPport el puerto de ShippingExplore

El programa supone por defecto que puede conectarse a kplex en localhost y el puerto 10110, si no es así, admite cambiarlos con
--TCPhost <dirección_servidor_TCP>
--TCPport <puerto_servidor_UDP>




Espero que te sirva
Se podría mejorar añadiendo gestión de excepciones ...
__________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
El mar es de TODOS.
Lo que es de TODOS, NO ES MÍO.


"No hay nada como el MAR"
Tinico N'Hielo
Citar y responder
2 Cofrades agradecieron a gilinas este mensaje:
Diavolo (27-10-2014)