B

bullterrier_the_one

Usuario (Paraguay)

Primer post: 18 abr 2009Último post: 5 dic 2011
2
Posts
43
Puntos totales
0
Comentarios
Codigo Fuente Cliente/Servidor en C
Codigo Fuente Cliente/Servidor en C
Apuntes Y MonografiasporAnónimo4/18/2009

Aqui les dejo dos Ejemplos de Cliente/Servidor en lenguaje C.Son de unas clases de la facu en la materia de sistemas distribuidos de ingenieria en informatica- - - - - - - - - - - - - - - - - - - - - Ejemplo 1 - - - - - - - - - - - - - - - - - - - - - Cliente 1#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#DEFINE PORT 3600#DEFINE MAXDATASIZE 100int main(int argc, char *argv[]){ int fd, numbytes; char buf; struct hostent *he; struck sockaddr_in server; if (argc!=2) { printf("Usa:%<Direccion IP>n", argv[0]; esit(-1); } if (he=gethostbyname(argv[1]))==NULL) { printf("error en gethosbynamen" ); exit(-1); } if ((fd=socket(AF_INET, sock_stream,0)==-|) { printf("error en socketn" ); exit(-1); } server.sin_family=AF_INET; server.sin_port=htons(PORT); server.sin_addr=*((struct in_addr*) he->h_addr); bzero(&(server.sin_zero),0); if (connect(fd,(struct sockaddr*)&server, sizeof(struct sockaddr))==-1) { printf("error en connectn" ); exit(-1); } if (numbytes=recv(fd,buf,MAXDATASIZE,0))==-1) { printf("error en recvn" ); exit(-1); } buf='0'; printf("Mensaje del servidor:%n",buf); close(fd);}Servidor 1#include<stdio.h>#include<sys/tpes.h>#incuude<sys/socket.h>#include<netinet/in.h>#DEFINE PORT 3500#DEFINE BACKLOG 2main(){int fd, fd2;struct sockaddr_in server;struct sockaddr_in client;int sn_size;if ((fd=socket(AF_INET, SOCK_STREAM, 0))==1){ printf ("Error en socketn" ); exit(-1);}server.sin_family = AF_INET;server.sin_port=htons(PORT);server.sinaddrs.s_addr=INADDR_ANY;bzero(&(server.sin_zero),8);if (bind(fd,(strut sockaddr *) &server, sizeof(struct sockaddr))== -1){ printf("Error en bindn" ); exit(-1)}if (listen(fd, BAKLOG) == -1){ printf("Error en listenn" ); exit(-1);} while (1) { sin_size = sizeof(struct sockaddr_in); if ((fd2=accept(fd,(struct sockaddr *)&client, &sin_size)) == -1) { printf ("error en accept n" ); exit(-1); } printf("Se conectaron desde %sn", inet_ntoa(client.sin_addr)); send(fd2, "Bienvenido a mi servidor!!!n",26, 0); close(fd2); }}- - - - - - - - - - - - - - - - - - - - - Ejemplo 2 - - - - - - - - - - - - - - - - - - - - - Cliente 2#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>/**********************************************************//* función MAIN *//* Orden Parametros: IP destino, puerto , mensaje *//* *//**********************************************************/main(int argc, char *argv[]) {int s;struct sockaddr_in bs,des;char resp[255];int *sd; if (argc == 4) { // Creamos el socket s = socket(AF_INET,SOCK_STREAM,0); if (s != -1) { bs.sin_family = AF_INET; bs.sin_port = htons(0); //Asigna un puerto disponible dela máquina bs.sin_addr.s_addr = htonl(INADDR_ANY); //Asigna una IP de la máquina //Asigna un nombre local al socket if ( bind(s,(struct sockaddr*)&bs, sizeof(bs)) != -1) { //Se prepara el nombre de la máquina remota des.sin_family = AF_INET; des.sin_addr.s_addr = inet_addr(argv[1]); des.sin_port = htons(atoi(argv[2])); //Establece la conexión con la máquina remota connect(s,(struct sockaddr*)&des,sizeof(des)); //Envía el mensaje send(s,argv[3],strlen(argv[3])+1,0); printf("nn->Enviando: %s, a: %s en el puerto: %s n",argv[3], argv[1], argv[2]); //Recibe la respuesta recv(s,resp, sizeof(resp) ,0); printf("<-Recibido: %sn",resp); //Se cierra la conexión (socket) close(s); } else { printf("ERROR al nombrar el socketn" ); } } else { printf("ERROR: El socket no se ha creado correctamente!n" ); } } else { printf("nnaEl número de parámetros es incorrectonn" ); }}Servidor 2#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>/**********************************************************//* función MAIN *//* Orden Parametros: Puerto *//* *//**********************************************************/main(int argc, char *argv[]) {int s;struct sockaddr_in bs, in;char entrada[255];int sd; if (argc == 2) { // Creamos el socket s = socket(AF_INET,SOCK_DGRAM,0); if (s != -1) { bs.sin_family = AF_INET; bs.sin_port = htons(atoi(argv[1])); //Asigna el puerto especificado por la línea de comandos bs.sin_addr.s_addr = htonl(INADDR_ANY); //IP cualquiera de la máquina //Asigna un nombre local al socket if( bind(s,(struct sockaddr*)&bs, sizeof(bs)) != -1) { printf("naServidor ACTIVO escuchando en el puerto: %sn",argv[1]); //El while permite atender a múltiples clientes while (1) { //Recibe la cadena del cliente if ( recvfrom(s,entrada, sizeof(entrada) ,0,(struct sockaddr*) &in, &sd)== -1) perror("Error en recvfrom" ); //Devuelve la cadena al cliente if (sendto(s,strcat(entrada, "" ; ) ,strlen(entrada)+1,0,(struct sockaddr*) &in, sizeof(in)) == -1) perror("Error en sendto" ); } //Se cierra el socket close(s); } else { printf("ERROR al nombrar el socketn" ); } } else { printf("ERROR: El socket no se ha creado correctamente!n" ); } } else { printf("nnaEl número de parámetros es incorrectonn" ); }}Los codigos son basicos, pero espero que le sea de utilidad a alguien y si quieren compartir con mejoras en el codigo GENIAL para los que alguna vez necesiten!!

43
18
E
Evitar la copia de nuestra aplicación hecha en delphi
Apuntes Y MonografiasporAnónimo12/5/2011

Uno de nuestros temores como programadores es que después de mucho trabajo, esfuerzo y dedicación en nuestro sistema, nuestra creación, se nos copie el sistema!Y una de las maneras de evitar de la copia ilegal de mismo es realizando el compilado del mismo, incluyendo el serial del disco duro (y decir serial, me refiero al que es asignado en la fabrica, cuando se creo el disco duro)Para ello existe un par de funciones que nos ayudaran a evitarlo de cierta manera.Aqui les dejo el link del blog: http://tipsdelphi.wordpress.com/2011/12/01/evitar-copia-de-aplicacion-delphi/Cualquier pregunta, duda o sugerencia, pueden hacerlo aquí o en el mismo blog..Saludos...

0
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.