Servidor TCP hacía fuera de Velneo

Estoy desarrollando una aplicación de Velneo que requiere mantener una conexión TCP como servidor para recibir y enviar datos hacía un software externo a Velneo. He logrado que arrancara y cerrara el socket viendo como su puerto estaba en uso a través de netstat -ab. No obstante, soy incapaz de conectarme al socket desde la propia máquina del servidor ejecutando un script de powershell.

Lo único que hace el tcp es esto.

image

Siendo arrancado desde el ON_INIT_SERVER correctamente.

image

Y el código de powershell que estoy probando en local para testear su funcionamiento es este:

$tcpConnection = New-Object System.Net.Sockets.TcpClient([IPAddress]::Loopback, 6094)
$tcpStream = $tcpConnection.GetStream()
$reader = New-Object System.IO.StreamReader($tcpStream)
$writer = New-Object System.IO.StreamWriter($tcpStream)
$writer.AutoFlush = $true

Write-Output(“Iniciado socket”);

Write-Output($reader.ReadLine())

$writer.Dispose()
$reader.Dispose()
$tcpStream.Dispose()
$tcpConnection.Dispose()

¿Es posible utilizar el TCP de Velneo de esta manera con software externo o solo es posible para comunicación entre vserver y vclient?
¿Qué otras soluciones me recomendarían en caso de que no fuera posible?

Hola carlos_villora_terce.

Aunque el protocolo TCP de Velneo nativo es bastante simple, su funcionamiento es correcto, de hecho se usa en la excelente utilidad CIRRUS para implementar un protocolo HTTP con clientes externos.

Como ves, el script powershell funciona correctamente, revísalo.

Saludos
Paco Satué

Gracias, Ya sabía que el script funciona ya que lo he probado con sockets en otro lenguaje. Aún así no parecía funcionar. Solo sé que está activo y la parte de servidor del objeto TCP simplemente envía un mensaje.

¿Dónde utiliza el TCP en Cirrus?
¿Qué podría fallar a la hora de comunicarse localmente?

Seguiré investigando, gracias.

Vale, parece que ha sido de capaz de funcionar. Fallaba la constante del puerto. Al ponerlo dentro del objeto TCP funcionaba. Pero no al sacarlo en una constante. ¿Cómo se debería hacer eso para mantener una sola variable a través de toda la aplicación?

Hola carlos_villora_terce.

Coloca la CONSTANTE del puerto de escucha en la propiedad Fórmula puerto de escucha.

imagen

Y sobre CIRRUS la propia entrada de la página Cirrus.js explica claramente el uso del protocolo TCP de Velneo.

Saludos
Paco Satué

Vale gracias, así es como intenté poner una constante y ahora que he probado de nuevo funciona. No sé muy bien que habré hecho mal, pero gracias de todos modos

¿Permiten los Sockets TCP de Velneo utilizar SSL?

Hola carlos_villora_terce.

Creo que no, en la web https://doc.velneo.com/velneo-cloud/tcp no se dice nada al respecto, aunque lo mejor es que hagas la consulta al departamento comercial o soporte.

Saludos
Paco Satué