Os dejo el código que tengo y un resumen del problema:
Código
#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int sockfd, newsock; int main (int argc, char *argv []) { int cont = 0; struct sockaddr_in client, host; char buffer [1024]; int size=sizeof (client); sockfd=socket (2, 1 , 0); host.sin_family=AF_INET; host.sin_addr.s_addr=0; bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr)); listen (sockfd, 1); while (1) { newsock=accept (sockfd, (struct sockaddr*)&client, &size); while (cont != -1) { struct tm *ahora; sleep (1); } printf ("Finishing connection from %s:%d\n\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port)); close (newsock); } close (sockfd); return 0; }
Código:
$ gcc -o serv serv.c
$ ./serv 31337
Code 0.1 - Dealer 2011
Got connection from 127.0.0.1:48677
$
$ gdb -q serv
Leyendo símbolos desde /home/juanra/Escritorio/serv...(no se encontraron símbolos de depuración)hecho.
(gdb) r 31337
Starting program: /home/juanra/Escritorio/serv 31337
Code 0.1 - Dealer 2011
Got connection from 127.0.0.1:48678
Program received signal SIGPIPE, Broken pipe.
0x0012d422 in __kernel_vsyscall ()
(gdb)
Código:
$ nc -vv 127.0.0.1 31337
Connection to 127.0.0.1 31337 port [tcp/*] succeeded!
22/12/2011 13:57:09
22/12/2011 13:57:10
22/12/2011 13:57:11
22/12/2011 13:57:12
22/12/2011 13:57:13
^C
$ nc -vv 127.0.0.1 31337
Connection to 127.0.0.1 31337 port [tcp/*] succeeded!
22/12/2011 13:57:33
22/12/2011 13:57:34
22/12/2011 13:57:35
22/12/2011 13:57:36
^C
$
PS: Evidentemente, los dos programas (servidor y nc) corren a la vez. Un saludo. Dealer