Allora come avevo detto su questa socket ci sto lavorando e fino ad ora ho fatto questo ma ho alcuni dubbi
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <syslog.h>
#include <netinet/in.h>
#include <netdb.h>
#define BUFFERSIZE 1024
main(int argc,char *argv[] )
{
//Dichiarazioni
//Buffer della socket socket
char filebuffer[BUFFERSIZE];
//Descrittore socket
int sd;
//Esito della connessione
int psd;
//Numero di bytes rivevuti
int nload;
//Struct dell'indirizzo del server
struct sockaddr_in server;
//Struct di tipo hostent (per la conversione di indirizzi) del client
struct hostent *host;
//Controllo dell'interfaccia del client
if(argc!=4)
{
printf("Non sono stati inserititi tutti i parametri");
printf("L'interfaccia è: remote_sort nodoserver file stringa");
exit(1);
}
memset ((char *)&server, 0, sizeof(struct sockaddr_in));/* clear sockaddr structure */
//Inizio connessione
host = gethostbyname(argv[1]);
server.sin_family = AF_INET;
server.sin_addr.s_addr=((struct in_addr*)(host->h_addr))->s_addr;
server.sin_port = 12347;
//Creazione socket
sd=socket(AF_INET, SOCK_STREAM, 0);
if(sd<0)
{
perror("apertura socket");
exit(1);
}
else printf("\nClient: creata la socket sd=%d\n", sd);
//Connessione al server
psd=connect(sd,(struct sockaddr *) &server,sizeof(struct sockaddr));
if(psd<0)
{
perror("Errore in connect");
exit(1);
}
else printf("Client: connect ok\n");
//Caricamento in filebuffer del contenuto del file
FILE *file = fopen(argv[2],"r");//"r"lettura mode
if (file==NULL) return 0;
strcpy(filebuffer,"");//copia"" in filebuffer
fflush(stdin);//su uno stream di output provoca la scrittura di dati bufferizzati
ma non ancora scritti su uno stream di input,l'effeto è indefinito
rewind(file);
fscanf(file,"%s",&filebuffer);
printf("\nstringaletta dal File: %s\n",filebuffer);
//Invio di filebuffer
send(sd,filebuffer,BUFFERSIZE,0);
printf("Stringa inviata, aspetto risposta\n\n");
***//Ricezione della stringa in filebuffer
nload = recv(sd,filebuffer,BUFFERSIZE, 0);
printf("Stringa ricevuta: %s\n",filebuffer);
//Salvataggio del file
FILE *fileord = fopen(argv[3],"w");
fprintf(fileord,"%s",filebuffer);
printf("File Salvato\n\n");
fclose(file);
fclose(fileord);
close(sd);
exit(0);
}
ma ho molti dubbi...questo è solo il client...il server poi mi dà ancora + preoccupazioni
aspetto notizie
}