Cita:
Originalmente publicado por Diavolo
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:
- Poner el kplex para que envíe por TCP como server
- 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 ...