-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPrimerServidorTCP.c
51 lines (42 loc) · 1.31 KB
/
PrimerServidorTCP.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define PORTNUMBER 12345
int
main(void)
{
char buf[10];
int s, n, ns, len;
struct sockaddr_in direcc;
/* Crea un socket. */
s = socket( AF_INET, SOCK_STREAM, 0 );
/* Crea la direccion del servidor. */
bzero( (char *) &direcc, sizeof( direcc ) );
direcc.sin_family = AF_INET;
direcc.sin_port = htons(PORTNUMBER);
direcc.sin_addr.s_addr = htonl( INADDR_ANY ); /* Usa la wildcard address.*/
len = sizeof( struct sockaddr_in );
/* Hago el bind del socket con la direccion. */
if( bind( s, ( struct sockaddr *) &direcc, len ) )
printf( "bind error" );
/* Cuantos pedidos de conexion puedo encolar. */
listen(s, 5);
while(1/*para que no finalice la ejecucion cuando se cierre la conexion por parte del cliente*/)
{
/* Espero y Acepto una conexion. */
ns = accept( s, ( struct sockaddr * ) &direcc, &len );
/* Leo desde el socket hasta un end-of-file e
* imprimo en la salida estandar. */
printf("Connection from : %s\n",inet_ntoa(direcc.sin_addr));
while ( ( n = recv( ns, buf, sizeof(buf), 0 ) ) > 0 ){
write( ns, buf, n );//ns para servidor de eco (Cliente)
//write(1, buf, n) 1 para imprimir por pantalla (Servido)
}
close(ns);
}
close(s);
exit(0);
}