Programacion de sockets...

Iniciado por kotora, 29 Octubre 2013, 16:16 PM

0 Miembros y 1 Visitante están viendo este tema.

kotora

Lo primero, un saludos a todos y gracias por el tiempo perdido ;)

Al lio!

Estoy haciendo el trabajo de final de carrera y tengo que simular una parte del bus de comunicaciones aeronáutico AFDX, que no es mas que una adaptación del IEEE802.3, lo montan en el A380&350; tengo que establecer comunicación entre un chip que controlo con la Raspberry Pi(Linux-Debian) y un ordenador que corre bajo Windows que me manda la info al chip que necesito.

En primer lugar, la información sigue el siguiente camino:
Windows-->NETWORK(SOCKETS)-->Raspberry Pi(Linux)... no necesito camino inverso.

En segundo lugar, todo corre bajo datagramas(UDP)

Y por ultimo:

El lado de Linux debe trabajar con C porque la comunicación entre Raspberry Pi y chip es por el bus de comunicaciones SPI y las librerías que tengo son de C.

Primera pregunta:

¿Quien hace de cliente? yo diría por lo que he leído que de cliente hará el lado de Windows.

Segunda....:

¿Puedo usar C# en lado windows y C en lado Linux?

Mil gracias y un saludo!

eferion

Cita de: kotora en 29 Octubre 2013, 16:16 PM
Primera pregunta:

¿Quien hace de cliente? yo diría por lo que he leído que de cliente hará el lado de Windows.

Todo depende de lo que diga el protocolo. Entiendo que si la comunicación es unidireccional ( detalle que me resulta demasiado curioso, ) el servidor debería ser forzosamente el destinatario de los mensajes... pero lo que te digo, la clave está en lo que aparezca en la especificación del protocolo.

Cita de: kotora en 29 Octubre 2013, 16:16 PM
Segunda....:

¿Puedo usar C# en lado windows y C en lado Linux?

La comunicación por sockets no entiende de lenguajes de programación. Una trama enviada por una red no es más que un flujo binario de datos.

Lo que sí es necesario es que tanto cliente como servidor "hablen" el mismo lenguaje, es decir, que se rijan por las mismas reglas de comunicación ( es decir, el protocolo de comunicación ).

Dicho de otra forma, cuando tú estás preguntando algo en este foro, lo que necesitas es una respuesta... te da igual si quien te responde es un hombre, una mujer, un niño, un perro o un despertador... te da igual siempre y cuando la respuesta sea satisfactoria. Es una analogía un poco extravagante pero sirve para plasmar la idea.

Y contestando de forma directa, SI, puedes utilizar el lenguaje que te de la gana en cada extremo de la comunicación.

kotora

Mil gracias... la verdad es que llevo toda la tarde leyendo cosicas y  he terminado por responderme a mis preguntas ;).... en efecto, lo del server o cliente depende, ademas siendo que el protocolo es UDP la comunicación siempre será bidireccional ya que por su naturaleza necesita de algoritmos para suplir la No orientación a conexión... y lo de los lenguajes da lo mismo porque tenemos una interface que nos hace de "traductor" a un tercer leguaje por así decirlo....

enfin... seguro que me surgen mas preguntas para mas adelante... GRACIAS y saludos!

eferion

Solo una cosa más.

UDP no tiene por qué ser bidireccional. UDP se basa en el envío de tramas de datos sin control de flujo alguno... por lo que perfectamente un cliente podría enviar datos a un servidor sin recibir ( y sin esperar recibirla ) respuesta alguna.

Otra cosa es el protocolo TCP, que este si asegura tanto la entrega como el orden de las tramas... pero también es más pesado y lento.