[Programación] pasaje de mensajes a un socket
German
german_morre en yahoo.com.ar
Vie Feb 29 19:37:02 ARDT 2008
Leonardo Rios escribió:
> Buenas Lista, mi pregunta es como pasar mensajes a traves de SOCKET.
> Es programacion bajo linux. Estoy estudiando bajo el libro de
> Unix_Network_programming y no sale lo que necesito.
>
> SEgun las funciones recv y send que es para recibir un mensaje de un
> socket conectado y enviar un mensaje a un socket respectivamente.
>
> Ahora mi pregunta los descriptores de archivos deben ser iguales o !=.
>
> el siguiente escenario es:
>
> cliente / servidor
> /
> send(); / recv();
> /
> /
> /
>
>
> * los fd tanto del cliente como del servidor deben ser iguales ????
> * el mensaje se debe almacenar en un char MENSAJE[100]; ???????
> * el buffer tiene que ser leido y escrito por ambos??? char buffer[100];
>
> si tienen un pedazo de codigo implementado estaria copado que me lo adjuntasen
>
>
>
Hola Leonardo,
Hace alguno tiempo implemente una comunicacion via sockets entre
aplicaciones y me guie con este articulo :
http://linuxgazette.net/issue74/tougher.html
Los ejemplos son en c++, porque es el lenguaje en que programo, pero los
ejemplos bien podrian portarse a c, o cualquier otro lenguaje.
En mi caso implemente la funcionalidad de servidor y cliente en la misma
aplicacion, de manera que una instancia podia pasarle mensajes a otra.
Es decir, no habia una aplicacion cliente diferente de la servidor.
La cosa se complico cuando quise hacer que la aplicacion servidor
escuchara un puerto determinado y al iniciar una comunicacion con el
cliente volviera inmediatamente a escuchar, para eso habia que crear un
nuevo proceso y..., en definitiva demasiado para lo que yo pretendia.
En el caso de necesitar tener una aplicacion servidor dedicada y que
permita multiples concecciones existe la posibilidad de hacer algo bien
sencillo, que tome como entrada todo lo que le llega al stdin y devuelva
por stdout, luego la registras en el etc/services y inetd se encarga del
resto, pero esa es otra historia... (recuerdo haberlo probado, pero no
logro encontrar el codigo por ningun lado!)
Espero que te sirva.
Saludos
German
Más información sobre la lista de distribución Programacion