Salve, ho questi 2 codici un client e un server dove il client dovrebbe mandare il file prova.txt al server, ma nel momento in cui il server resta in ascolto e il client invia il file scompare il testo del file e non viene inviato nulla... Perchè?? Grazie
CLIENT
codice:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#define PORT 2080
main()
{
int sock;
sock = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serv;
serv.sin_port = htons(PORT);
printf("%x %x\n",PORT,htons(PORT));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = inet_addr("127.0.0.1");
printf("client connecting\n");
connect(sock, (struct sockaddr *)&serv,sizeof(serv));
char buf[50];
FILE* fp = fopen("prova.txt","w");
while(1){
//bzero(buf,sizeof(buf));
read(sock,buf,50);
if(strcmp(buf,"quit1234")==0)
{
break;
}
fprintf(fp,"%s",buf);
}
fclose(fp);
}
SERVER
codice:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#define PORT 2080
main()
{
int sock1, sock2, clength;
sock1 = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serv, cli;
serv.sin_family = AF_INET;
serv.sin_port = htons(PORT);
serv.sin_addr.s_addr = inet_addr("127.0.0.1");
bind(sock1, (struct sockaddr *)&serv, sizeof(serv));
listen(sock1, 5);
clength = sizeof(cli);
int i = 0;
char buf[50];
sock2 = accept(sock1, (struct sockaddr *)&cli, &clength);
printf("\n Client Connected\n");
FILE* fp = fopen("prova.txt", "r");
while(!feof(fp)){
//bzero(buf,sizeof(buf));
fread(buf, sizeof(char), 50, fp);
write(sock2, buf, 50);
}
write(sock2, "quit1234", 50);
fclose(fp);
return 0;
}