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;

}