Envio fichero por TCP


([N3] GSI) #1

Tenemos desarrollada un ERP que se comunica con tablets, webs, etc., hay un cliente que ha desarrollado una aplicación propia para iPad, hasta ahora todo ok, pero necesitamos que nos envie un fichero y no lo conseguimos, nos ha proporcionado el código utilizado pero no vemos el problema, me escribe lo siguiente:

El código de Node.js es el que yo uso, lo he comentado para que quede más claro. El de Python, realmente es el que tienen en la documentación, por eso no he puesto comentarios.

0000/xxx… == PUERTO/IP

Node.js
// Modulos instalables mediante npm
var net = require(‘net’);
var fs = require(‘fs’);
var offsetBuffer = require(‘offset-buffer’);
// Tamaño del fichero en bytes
var stats = fs.statSync(’./prueba.ped’);
var size = stats.size;
// Tamaño del fichero en un buffer de 8 bits Big Endian 64bits
var sizeBuff = new offsetBuffer(8);
sizeBuff.writeUInt64BE(size);
// Buffer del fichero a enviar
var fileBuff = fs.readFileSync(’./prueba.ped’);
// Conexión al servidor mediante TCP
server = new net.Socket();
server.connect(0000, ‘xxx.xxx.xxx.xxx’, function() {
// Se envia al servidor la concatenación de ambos buffers
server.write(sizeBuff + fileBuff);
// Se termina la ejecución
process.exit();
});

Python - http://velneo.es/info_v7_717_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proceso/comandos/comunicacion/protocolo_tcp/protocolo_tcp_recibir_fichero/
#!/usr/bin/python
import socket
import sys
from struct import *
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect( ( ‘xxx.xxx.xxx.xxx’, 0000 ) )
sendfile = open(‘dialgra.ped’, ‘rb’)
data = sendfile.read()
a = pack(">Q", 144)
s.sendall(a+data)
s.close()


([N1] wikan) #2

Faltaría la parte que recibe, dando por hecho que la que envía está correcta.

En Velneo tendrías que usar Recibir buffer, no usar Recibir fichero, ya que supongo que hará sus cosas internamente y no te servirá con otro lenguaje.


([N1] wikan) #3

@GSI podrías comentar si los has solucionado. Supongo que le servirá a los que vengan detrás.