Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Consulta] Duda sobre socket
Autor Mensaje
anonimail Sin conexión
Campeon del cubo Rubik

****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 47
Agradecimientos: 98 en 22 posts
Registro en: Feb 2012
Mensaje: #1
[Consulta] Duda sobre socket Dudas y recomendaciones Informática I (Electrónica)
¿Como hago para leer linea por linea?
Realizo la conexión entre sockets. Pero cuando envio los buffers con un while, el cliente en vez de recibir buffer por buffer, lo lee en un buffer.
Existe alguna función al respecto.

SERVIDOR:
while (buffer!=NULL)
{
send(fd, buffer, strlen(buffer), 0); //Acá se cumple
}

CLIENTE:
while (recv(fd, buffer, 100, 0) != 0)
{
//Acá lo recibo en el buffer de una vez, pero me gustaría que fuera por partes.
}

Gracias, si no me explique bien avisen.
Otros adjuntos en este tema
.gz  sockets.tar.gz ( 9,65 KB / 23) por JulianD
09-02-2013 21:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
JulianD Sin conexión
Colaborador
~`☼`~
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 2.431
Agradecimientos dados: 271
Agradecimientos: 912 en 109 posts
Registro en: Feb 2011
Mensaje: #2
RE: [Consulta] Duda sobre socket
Te dejo las funciones de la cátedra, vendrian a ser de mas alto nivel que programar socket desde cero.. Nose de donde las saque, pero son las que te piden que uses en los finales.


int conectar (int argc, char * argv[]);
int Open_conection ( struct sockaddr_in * my_addr);
int Aceptar_pedidos (int sockfd);


En el adjunto que te mando hay un ejemplo hecho..
Pero modificandolo un poco (aprendiendote la parte de la conexion), y usando read y write junto con los file descriptor podes hacer casi cualquier cosa que te puedan llegar a tomar.

Saludos!


Archivo(s) adjuntos
.gz  sockets.tar.gz (Tamaño: 9,65 KB / Descargas: 23)

[Imagen: 2r27ldw.jpg]
(Este mensaje fue modificado por última vez en: 09-02-2013 21:26 por JulianD.)
09-02-2013 21:26
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
anonimail Sin conexión
Campeon del cubo Rubik

****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 47
Agradecimientos: 98 en 22 posts
Registro en: Feb 2012
Mensaje: #3
RE: [Consulta] Duda sobre socket
(09-02-2013 21:26)JulianD escribió:  Te dejo las funciones de la cátedra, vendrian a ser de mas alto nivel que programar socket desde cero.. Nose de donde las saque, pero son las que te piden que uses en los finales.


int conectar (int argc, char * argv[]);
int Open_conection ( struct sockaddr_in * my_addr);
int Aceptar_pedidos (int sockfd);


En el adjunto que te mando hay un ejemplo hecho..
Pero modificandolo un poco (aprendiendote la parte de la conexion), y usando read y write junto con los file descriptor podes hacer casi cualquier cosa que te puedan llegar a tomar.

Saludos!

¿Osea que puedo utilizarlos en cualquier parcial o final como quiera?. ¿Son obligatorias?.
Te agradezco porque no sabia.
(Este mensaje fue modificado por última vez en: 09-02-2013 23:05 por anonimail.)
09-02-2013 22:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
JulianD Sin conexión
Colaborador
~`☼`~
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 2.431
Agradecimientos dados: 271
Agradecimientos: 912 en 109 posts
Registro en: Feb 2011
Mensaje: #4
RE: [Consulta] Duda sobre socket
No se si "como quieras".
Pero por lo general en los finales cuando toman sockets te tiran esos prototipos para que programes

_____________________________

Ah. Aca esta de donde lo saque:

http://www.electron.frba.utn.edu.ar/~afu...o1/socket/

[Imagen: 2r27ldw.jpg]
(Este mensaje fue modificado por última vez en: 09-02-2013 23:17 por JulianD.)
09-02-2013 23:16
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Jarry Sin conexión
Anomalía de Belady
I know teh codez
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.008
Agradecimientos dados: 189
Agradecimientos: 259 en 98 posts
Registro en: May 2008
Mensaje: #5
RE: [Consulta] Duda sobre socket
tenes que entender bien como funcionan los sockets. la cantidad que vos mandas, no se correlaciona con la que recibis. pensa en el correo, vos mandas 5 cartas, todas llegan al buzon del destinatario, y se quedan esperando a que las recojan. por ende, por mas que las cartas se hayan mandado separadas, cuando llegan parece como si hubieran llegado todas juntas.

lo mismo pasa con lo que envies por socket. un proceso envia, y otro recibe, pero hay un buffer en el medio. y cuando haces un recv te trae todo lo que tenga el buffer, sin distinguir por "paquetes". eso lo tenes que hacer vos.
lo mas convencional es armar un buffer en tu programa, e ir leyendo caracter por caracter desde ahi, hasta encontrarte con una marca que indique que ese paquete termino(en tu caso un EOL).

para aprender sockets, es muy recomendable esta guia: http://grupotp7542taller1.googlecode.com/files/beej.pdf

No estoy necesariamente de acuerdo con lo que dice en el post de arriba
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
10-02-2013 19:07
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
anonimail Sin conexión
Campeon del cubo Rubik

****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 111
Agradecimientos dados: 47
Agradecimientos: 98 en 22 posts
Registro en: Feb 2012
Mensaje: #6
RE: [Consulta] Duda sobre socket
Gracias y es justo lo que hice finalmente. Pero pensé que quizás exista alguna función que me lo reciba por partes.
salu2.
10-02-2013 19:14
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: