Pascal/Turbo Pascal - Hago programas, doy clases

   
Vista:

Hago programas, doy clases

Publicado por Dani (159 intervenciones) el 30/08/2008 15:32:46
Si quieres que haga cualquier programa, necesitas ayuda o clases de programación, contacta conmigo.

Dime lo que quieres y para cuándo lo quieres, y te haré el presupuesto lo antes posible. Precios asequibles, trabajo rápido y eficaz

Email / messenger de contacto: danifg85@hotmail.com
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Pascal/Turbo Pascal
- Código fuente de Pascal/Turbo Pascal
- Cursos de Pascal/Turbo Pascal
- Temas de Pascal/Turbo Pascal
- Chat de Pascal/Turbo Pascal
información
Códigos de Pascal/Turbo Pascal
- Palabras repeditas
- Bingo
- Matrix

RE:Hago programas, doy clases

Publicado por adalberto (19 intervenciones) el 01/09/2008 01:49:12
int main( ){

struct sockaddr_in sin;
struct sockadrr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int adress_size;

sock_descriptor=socket(AF_INET,SOCK_STREAM,0);

bzero(&sin,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_port=htons(8000);

bind(sock_descriptor,(struct sockadrr *)&sin,sizeof(sin));

listen(sock_descriptor,20);

while(1) {

//obtener un socket temporal

temp_sock_descriptor=accept(sock_descriptor,(struct sockadrr *)&pin,&adress_size);

//recibir datos del cliente

recv

//procesar datos del cliente

//devolver datos al cliente
send

//cerrar el socket temporal
close(temp_sock_descriptor);

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hago programas, doy clases

Publicado por adalberto (19 intervenciones) el 02/09/2008 12:42:49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#define MYPORT 3490 /* Puerto de escucha */
#define BACKLOG 10 /* Cantidad de conexiones máximas permit.*/
#define MAX 512 /*tamaño máximo del buff de lectura de archivo*/

int enviototal(int s, char buffer[],int *len);

int main( ){


int sockfd, new_fd;
/* Escuchar sobre sock_fd, nuevas conexiones sobre new_fd*/
struct sockaddr_in dir_local; /*información sobre mi dirección*/
struct sockaddr_in dir_entrante;
/* información sobre la dirección del cliente*/
int yes=1,bytesrec,sin_size;
FILE* archivo;
char nomarch[40],carpeta[40],dir[100],httpmsj[512];
char http200[ ]="HTTP/1.0 200 OK ";
char http404[ ]="HTTP/1.0 404 Not Found ";
char *parse,*p,*ptr;
int len,bytesleidos;
char buffer[512];
int total;

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit (1);
}

if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,
sizeof(int)) == -1)
{
perror("setsockopt");
exit (1);
}

dir_local.sin_family = AF_INET;
// Ordenación de bytes de la máquina
dir_local.sin_port = htons(MYPORT);
// short, Ordenación de bytes de la red
dir_local.sin_addr.s_addr = htonl(INADDR_ANY);
// Rellenar con mi dirección IP
memset(&(dir_local.sin_zero),0, 8);
// Poner a cero el resto de la estructura

if (bind(sockfd, (struct sockaddr *)&dir_local,
sizeof (struct sockaddr))== -1)
{
perror("bind");
exit(1);
}


if (listen(sockfd, BACKLOG) == -1)
{
perror("listen");
exit(1);
}

while(1) {


sin_size =sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd,
(struct sockaddr *) &dir_entrante,&sin_size)) == -1)
{
perror("accept");
continue;
}

/*recibe nombre del archivo y se extrae del mensaje GET
el nombre para intentar la apertura*/

bytesrec=recv(new_fd,httpmsj,MAX-1,0);
total=bytesrec;
httpmsj[bytesrec]='';
while ((ptr=strstr(httpmsj," ") )== NULL)
{

bytesrec=recv(new_fd,&httpmsj[total],MAX-1-total,0);
total+=bytesrec;
httpmsj[total]='';

}

if(((p=strstr(httpmsj,"r/n/r/n"))!=NULL)||
((p=strstr(httpmsj,"/n/n"))!=NULL))

{ parse=strtok(httpmsj,"/");

parse=strtok(NULL," ");

strcpy(nomarch,parse);

/*se arma la ruta de acceso*/

strcpy(carpeta,"/etc/");

sprintf(dir,("%s%s"),carpeta,nomarch);

/*apertura de archivo*/

archivo=fopen(dir,"rb");

/*se procede a mandar los mensajes http correspondientes e iniciar la transferencia*/

if(archivo)
{
len=strlen(http200);
if(enviototal(new_fd,http200,&len)==-1)
/*se asegura de que llegue la totalidad del mensaje HTTP 200*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}

len=strlen(buffer);
while((bytesleidos=fread(buffer,sizeof(buffer),1,archivo))!=0)
{
if(enviototal(new_fd,buffer,&len)==-1)
/* asegura que llegue la totalidad del buffer*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}


}/*while de envio*/
} /*fin then*/

else

{

len=strlen(http404);
if(enviototal(new_fd,http404,&len)==-1)
/*asegura que llegue la totalidad del mensaje HTTP 404*/
{ perror("enviototal");
printf("Se enviaron %d bytes a causa del error ",len);
}

} /*fin else*/

//cerrar el socket temporal
close(new_fd);


}/*endif*/

}//end while infinito


close(sockfd);

return 0;

}

int enviototal(int s, char buffer[],int *len)
{
int total=0; /*cuantos bytes se enviaron*/
int restantes=*len; /*cuantos bytes quedan en el buffer*/
int n;
while (total<*len) {
n=send(s,buffer+total,restantes,0);
if(n==-1) {break;}
total+=n;
restantes-=n;
} /*fin while*/

*len=total; /*devuelve la cantidad enviada*/
return (n=-1?-1:0); /*devuelve -1 si falla, 0 en cualquier otro caso*/
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar