Ho iniziato lo studiio dei socket sotto linux, ho scritto un semplice client daytime :
codice:
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#define MAX 64
int main(int argc, char * argv[]) {
int sock, n_read;
struct sockaddr_in sock_addr;
char buf[MAX];
if ( argc != 2) {
fprintf (stderr,"Parametri inseriti non corretti\n");
return 1;
}
if ( sock = socket(AF_INET, SOCK_STREAM, 0) < 0) {
fprintf(stderr,"Socket non creato corretamente\n");
return 1;
}
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons(13);
if ( inet_pton(AF_INET, argv[1] , &sock_addr.sin_addr) <= 0) {
fprintf(stderr,"Trasformazione indirizzo non riuscita\n");
return 1;
}
if ( connect(sock, ( struct sockaddr *) &sock_addr, sizeof(sock_addr)) < 0) {
fprintf(stderr,"Connessione non riuscita\n");
return 1;
}
while ( n_read = read ( sock, buf, MAX) > 0) {
buf[n_read] = 0;
printf("%s\n", buf);
}
if ( n_read < 0) {
fprintf(stderr,"Errore nella lettura dei dati\n");
return 1;
}
close(sock);
return 0;
}
ma se prov a connetermi al mio ip non va.... ho attivato il server inetd decomentando la riga daytime !!!