io ho provato a fare così, ma nn funziona, ho letto RFC ma nn capisco ancora cosa faccio di sbagliato, la socket viene aperta collegata al server, spedisco la richiesta ma nn ricevo nessuna risposta
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <errno.h>
// Porta per la comunicazione
#define PORT 80
// Inizializzazione della variabile sockaddr_in
void addr_init (struct sockaddr_in *addr, int port, long int ip) {
addr->sin_family=AF_INET;
addr->sin_port = htons ((u_short) port);
addr->sin_addr.s_addr=ip;
}
main(int argc, char **argv) {
int i,sd;
int var1,var2,var3,var4;
int sock_size=sizeof(struct sockaddr_in);
int N,status;
pid_t pid;
struct sockaddr_in server;
char header[]="GET /image?speed=20 HTTP/1.1\r\n Host: 81.208.56.91";
int k,g;
char risp[]="";
// Controllo che vengano passati almeno due argomenti
if (argc<2) {
printf ("%s <server>\n",argv[0]);
exit(1);
}
// Controllo che l'IP del server passato sia un indirizzo IPv4 valido
if (sscanf(argv[1],"%d.%d.%d.%d",&var1,&var2,&var3,&var4) != 4) {
printf ("%s non è un indirizzo IPv4 valido\n",argv[1]);
exit(2);
}
// Inizializzazione dell'indirizzo
addr_init (&server,PORT,inet_addr(argv[1]));
// Creazione del socket
if ((sd=socket(AF_INET,SOCK_STREAM,0))<0) {
printf ("Impossibile creare un socket TCP/IP\n");
exit(3);
}else{printf("socket creata\n");}
// Creazione della connessione
if (connect(sd, (struct sockaddr*) &server, sock_size)<0) {
printf ("Impossibile collegarsi al server %s sulla porta %d: errore %d\n",
inet_ntoa(server.sin_addr.s_addr),PORT,errno);
exit(4);
}
printf ("Connessione stabilita con successo con il server %s sulla porta %d\n",
inet_ntoa(server.sin_addr.s_addr), ntohs(server.sin_port));
//spedisco la richesta sulla socket
k= send (sd, header, sizeof(header), 0);
printf ("comando inviato spediti %d caratteri\n", k);
usleep(1000000);
g=recv(sd, risp,k,0);
printf("risp di %d caratteri %s\n",g, risp);
// Chiusura della connessione
close(sd);
exit(0);
}