Gandalf_BD
02-03-2006, 20:33
Ciao a tutti...
ho iniziato a cimentarmi con la programmazione socket...
in particolare, sto seguendo "UNIX Network Programming" di Stevens, che mi sembra molto ben fatto...
ora... ho provato a far girare il programma qua sotto...
si tratta di un client che stabilisce una connessione tcp con un server che gli spedisce la data corrente attraverso la porta 13... questa data viene poi stampata a video...
c'è un piccolo problema... una volta che il programma viene lanciato, non succede niente...
a video non viene stampato nessun carattere e il programma non termina.... come mai?
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include "errlib.c"
#include "sockwrap.c"
#define MAXBUFL 255
#define DAYTIME_PORT 13
char *prog;
int main (int argc, char *argv[])
{
int sockfd, n;
char buf[MAXBUFL+1];
struct sockaddr_in servaddr;
/* for errlib to know the program name */
prog = argv[0];
/* check the arguments */
if (argc != 2)
err_quit ("usage: %s IPaddress_of_daytime_server", prog);
/* create socket */
sockfd = Socket(AF_INET, SOCK_STREAM, 0);
/* specify address of server to connect to */
memset (&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(DAYTIME_PORT);
Inet_aton(argv[1], &servaddr.sin_addr);
/* try to connect */
Connect (sockfd, (SA*) &servaddr, sizeof(servaddr));
/* read the answer */
while ( (n = Read(sockfd,buf,MAXBUFL)) > 0)
{
//buf[n] = 0; /* null terminate */
//if (printf ("Current date and time: %s\n", buf) == EOF)
//err_sys ("(%s) error - printf() failed", prog);
Write (1, buf, n);
}
return 0;
}
ps: tra l'altro.. come mai se inserisco gli header .h il compilatore non trova i riferimenti alle funzioni, obbligandomi così ad inserire i .c?
dimenticavo!... sto programmando sotto linux, con gcc come compilatore...
grazie mille!! :)
ho iniziato a cimentarmi con la programmazione socket...
in particolare, sto seguendo "UNIX Network Programming" di Stevens, che mi sembra molto ben fatto...
ora... ho provato a far girare il programma qua sotto...
si tratta di un client che stabilisce una connessione tcp con un server che gli spedisce la data corrente attraverso la porta 13... questa data viene poi stampata a video...
c'è un piccolo problema... una volta che il programma viene lanciato, non succede niente...
a video non viene stampato nessun carattere e il programma non termina.... come mai?
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include "errlib.c"
#include "sockwrap.c"
#define MAXBUFL 255
#define DAYTIME_PORT 13
char *prog;
int main (int argc, char *argv[])
{
int sockfd, n;
char buf[MAXBUFL+1];
struct sockaddr_in servaddr;
/* for errlib to know the program name */
prog = argv[0];
/* check the arguments */
if (argc != 2)
err_quit ("usage: %s IPaddress_of_daytime_server", prog);
/* create socket */
sockfd = Socket(AF_INET, SOCK_STREAM, 0);
/* specify address of server to connect to */
memset (&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(DAYTIME_PORT);
Inet_aton(argv[1], &servaddr.sin_addr);
/* try to connect */
Connect (sockfd, (SA*) &servaddr, sizeof(servaddr));
/* read the answer */
while ( (n = Read(sockfd,buf,MAXBUFL)) > 0)
{
//buf[n] = 0; /* null terminate */
//if (printf ("Current date and time: %s\n", buf) == EOF)
//err_sys ("(%s) error - printf() failed", prog);
Write (1, buf, n);
}
return 0;
}
ps: tra l'altro.. come mai se inserisco gli header .h il compilatore non trova i riferimenti alle funzioni, obbligandomi così ad inserire i .c?
dimenticavo!... sto programmando sotto linux, con gcc come compilatore...
grazie mille!! :)