0% found this document useful (0 votes)
77 views8 pages

Practica1 Tecno

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views8 pages

Practica1 Tecno

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

1

1

















Practica 1

Nombre:

Matthew Vidangos Philippsberg
Juan Manuel Valdez
Cristian Condori
Franco Saavedra


Fecha: 29/11/2013

Materia:
Tecnologia De internet 2





2

2


Configuracion de Sockets

cliente


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

void error(const char *msg)
{
perror(msg);
exit(0);
}
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;

char buffer[256];
if (argc < 3) {
fprintf(stderr,"Uso: %s servidor puerto\n", argv[0]);




3

3
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR abriendo socket");
server = gethostbyname(argv[1]);
if (server == NULL) {
fprintf(stderr,"ERROR, no existe el servidor\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR conectando");
printf("Por favor ingrese un mensaje: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR escribiendo al socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR leyendo del socket");
printf("%s\n",buffer);




4

4
close(sockfd);
return 0;
}


Servidor 1


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

void error(const char *msg)
{
perror(msg);
exit(1);
}

//Funcion principal
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno;
socklen_t clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;




5

5
if (argc < 2) {
fprintf(stderr,"ERROR, puerto no especificado\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR abriendo socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR al asociar el socket (binding)");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
if (newsockfd < 0)
error("ERROR al aceptar la conexion cliente (accept)");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR leyendo del socket");
printf("Aqui esta el mensaje: %s\n",buffer);
printf("Ahora enviaremos un mensaje al cliente ...\n");
n = write(newsockfd,"Tengo tu mensaje!!",18);
if (n < 0) error("ERROR escribiendo al socket");
close(newsockfd);
close(sockfd);
return 0;




6

6






Servidor 2


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

void dostuff(int);
void error(const char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno, pid;
socklen_t clilen;
struct sockaddr_in serv_addr, cli_addr;
if (argc < 2) {
fprintf(stderr,"ERROR, puerto no especificado\n");




7

7
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR abriendo socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR al asociar el socket (binding)");
listen(sockfd,5);
clilen = sizeof(cli_addr);
while (1) {
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr, &clilen);
if (newsockfd < 0)
error("ERROR al aceptar la conexion cliente (accept)");
pid = fork();
if (pid < 0)
error("ERROR al generar del proceso hijo (fork)");
if (pid == 0) {
close(sockfd);
dostuff(newsockfd);
exit(0);
}
else close(newsockfd);
}




8

8
close(sockfd);
return 0;
}





void dostuff (int sock)
{
int n;
char buffer[256];

bzero(buffer,256);
n = read(sock,buffer,255);
if (n < 0) error("ERROR leyendo del socket");
printf("Aqui esta el mensaje: %s\n",buffer);
printf("Ahora enviaremos un mensaje al cliente ...\n");
n = write(sock,"Tengo tu mensaje!!",18);
if (n < 0) error("ERROR escribiendo al socket");
}

You might also like