Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Segundo parcial Info I (final)
Autor Mensaje
lucho12a Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 33
Agradecimientos dados: 6
Agradecimientos: 1 en 1 posts
Registro en: Oct 2011
Mensaje: #1
Segundo parcial Info I (final) Parciales Informática I (Electrónica)
Hola, les tiro la parte practica de lo que fue mi segundo parcial, el profesor dijo que supuestamente estaria en condiciones de dar final aprobando este parcial, ya que es muy integrador.
Si me dan una mano con esto se los agredeceria infinitamente.
A mi mas que nada me mareo un poco el tema de ir encolando en una lista y guardarlo en un archivo, es decir me complico como integrarlo todo en un mismo programa.
Saludos!


Archivo(s) adjuntos Imagen(es)
   
07-12-2012 21:04
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: 108
Agradecimientos dados: 45
Agradecimientos: 74 en 21 posts
Registro en: Feb 2012
Mensaje: #2
RE: Segundo parcial Info I (final)
Lo hice. Esta hecho medio a lo bestia pero funciona. Obviamente necesitas un archivo que actúe de cliente.
salu2.



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <unistd.h>

#define PORT 3550
#define BACKLOG 2

typedef struct clientes
{
char codigo[9];
int flag;

struct clientes *sig;
}CLIENTE;

typedef struct info
{
CLIENTE *inicio;
CLIENTE *fin;
}INFO;

int Conectar ();
int Aceptar (int);
int Crear (INFO *, char *);
void Agregar (INFO *, CLIENTE *);
void Guardar (INFO *);

int main (void)
{
int x=0;
int fd, fd2;
int flag=0;
char buf[100];

INFO Lista;
Lista.inicio = NULL;
Lista.fin = NULL;

fd = Conectar();
do{
fd2 = Aceptar(fd);
read (fd2, buf, sizeof(buf));
x = Crear (&Lista, buf);
close(fd2);
}while(x!=1);
Guardar(&Lista);

close(fd);
}

int Conectar()
{
int fd;
struct sockaddr_in server;

server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = INADDR_ANY;
bzero (&(server.sin_zero), 8);

fd = socket (AF_INET, SOCK_STREAM, 0);
bind (fd, (struct sockaddr *)&server, sizeof(struct sockaddr));
listen (fd, BACKLOG);

return fd;
}

int Aceptar (int fd)
{
int fd2;
int sin_size;
struct sockaddr_in cliente;

sin_size = sizeof(struct sockaddr);

printf ("Esperando conexion...\n");
fd2 = accept(fd, (struct sockaddr *)&cliente, &sin_size);
printf ("Conexion exitosa\n");

return fd2;
}

int Crear (INFO *Lista, char *buf)
{
CLIENTE *nuevo;
nuevo = malloc(sizeof(CLIENTE));

printf ("Buffer: %s\n", buf);
if (nuevo!=NULL)
{
nuevo->sig = NULL;

strcpy(nuevo->codigo, strtok(buf, ","));
nuevo->flag = atoi(strtok(NULL, "\n"));

if (strcmp(nuevo->codigo, "FFFFFFFF") != 0)
{
Agregar(Lista, nuevo);
}
else
{
free(nuevo);
return 1;
}
}
else
{
printf ("ERROR: No hay memoria\n");
}
}

void Agregar (INFO *Lista, CLIENTE *nuevo)
{
if (Lista->inicio==NULL && Lista->fin==NULL)
{
Lista->inicio = nuevo;
Lista->fin = nuevo;
}
else
{
Lista->fin->sig = nuevo;
Lista->fin = nuevo;
}
}

void Guardar (INFO *Lista)
{
CLIENTE *aux;

FILE *file;
//file = fopen ("/home/casa_inteligente/comandos.txt", "w");
file = fopen ("comandos.txt", "w");

for (aux=Lista->inicio; aux!=NULL; aux=aux->sig)
{
fprintf (file, "%s,", aux->codigo);
fprintf (file, "%d\n", aux->flag);
}
}


(Este mensaje fue modificado por última vez en: 14-02-2013 22:26 por anonimail.)
04-02-2013 20:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] anonimail recibio 1 Gracias por este post
lucho12a (13-02-2013)
lucho12a Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 33
Agradecimientos dados: 6
Agradecimientos: 1 en 1 posts
Registro en: Oct 2011
Mensaje: #3
RE: Segundo parcial Info I (final)
Buenisimo! me viene al pelo, una consulta igual, en la funcion agregar no estas haciendo una pila? no deberias agregar al final? o estoy equivocado? saludos!
13-02-2013 19:39
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: 108
Agradecimientos dados: 45
Agradecimientos: 74 en 21 posts
Registro en: Feb 2012
Mensaje: #4
RE: Segundo parcial Info I (final)
Tenés razón, ya cambie las lineas 126 y 127 para que sea una lista y también mejore eso del socket, lo distribui en un par de funciones para que no sea tan bruto el codigo. Hay que aclarar que esto seria por cada vez que un cliente cualquiera inicia su programa para enviar los datos. Me alegra que te haya servido.
salu2.
(Este mensaje fue modificado por última vez en: 14-02-2013 22:35 por anonimail.)
14-02-2013 22:29
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] anonimail recibio 1 Gracias por este post
lucho12a (18-02-2013)
lucho12a Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 33
Agradecimientos dados: 6
Agradecimientos: 1 en 1 posts
Registro en: Oct 2011
Mensaje: #5
RE: Segundo parcial Info I (final)
(14-02-2013 22:29)anonimail escribió:  Tenés razón, ya cambie las lineas 126 y 127 para que sea una lista y también mejore eso del socket, lo distribui en un par de funciones para que no sea tan bruto el codigo. Hay que aclarar que esto seria por cada vez que un cliente cualquiera inicia su programa para enviar los datos. Me alegra que te haya servido.
salu2.
Buenísimo! demasiado prolijo para mi jaja, te faltaría comprobar los errores que siempre rompen las bolas con eso jajaja.
Ahora estoy con otro parcial así integrador, si me dieras una mano con ese, el segundo punto en realidad, te estaría infinitamente agradecido, lo adjunto acá, si estas preparando final yo calculo que te va a servir también!
saludos y gracias man!


[Imagen: img072y.jpg]
http://imageshack.us/photo/my-images/560/img072y.jpg/

[Imagen: img071hi.jpg]
http://imageshack.us/photo/my-images/836/img071hi.jpg/
18-02-2013 14:39
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nigger Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 16
Agradecimientos dados: 10
Agradecimientos: 5 en 2 posts
Registro en: Feb 2013
Mensaje: #6
RE: Segundo parcial Info I (final)
¿Que quiere decir con que el servidor debe ser concurrente? Se que puede ser muy colgada la pregunta pero en mi cursada tuvimos solo una clase de socket jaja.
21-02-2013 13:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
lucho12a Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 33
Agradecimientos dados: 6
Agradecimientos: 1 en 1 posts
Registro en: Oct 2011
Mensaje: #7
RE: Segundo parcial Info I (final)
(21-02-2013 13:10)Nigger escribió:  ¿Que quiere decir con que el servidor debe ser concurrente? Se que puede ser muy colgada la pregunta pero en mi cursada tuvimos solo una clase de socket jaja.

Basicamente que puede atender mas de un cliente a la vez, que en realidad en el ejemplo de anonimail no esta hecho creo, ya que se hace mediante un fork, que toma el fd del accept y se cierra cuando no hay mas conexiones entrantes.
No te preocupes, yo también tuve sockets en la ultima clase, a la semana me evaluaron jaja..
21-02-2013 15:01
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] lucho12a recibio 1 Gracias por este post
Nigger (21-02-2013)
rafa00011 Sin conexión
Empleado de Fotocopiadora
I'd rather be a forest than a ...
**

Ing. Industrial
Facultad Regional Buenos Aires

Mensajes: 30
Agradecimientos dados: 44
Agradecimientos: 156 en 20 posts
Registro en: Apr 2013
Facebook Twitter
Mensaje: #8
RE: Segundo parcial Info I (final)
hola se que es re viejo este post, pero te acordas que profesor tuviste? yo tengo de profe a mariano gonzalez los viernes a la noche y no encuentro nada del segundo parcial. Gracias
12-11-2015 23:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] rafa00011 recibio 3 Gracias por este post
raphinafc (29-04-2016), martinelcrapero (29-04-2016), laurita.seoane97 (29-04-2016)
fernando.coz Sin conexión
Empleado de Fotocopiadora
Ronald Reagan, the actor?
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 35
Agradecimientos dados: 9
Agradecimientos: 19 en 10 posts
Registro en: Jun 2011
Mensaje: #9
RE: Segundo parcial Info I (final)
Rafa, yo la cursé el año pasado con Mariano y Misael como ayudante. El segundo parcial se trataba de armar un programa que simulara un fixture y a medida que vos le cargabas los resultados de los partidos, calcular goles a favor/contra, puntos, ranking, etc. Todo esto usando listas, archivos, etc. Pero es una gran lotería Info 1 como te habrás dado cuenta.

Saludos
15-11-2015 21:01
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.