如何在c语言中通过套接字从文件中读写另一个文件
我尝试在客户端读取一个文件,在套接字上写入,然后在服务器端获取de数据,并将其写入另一个文件,但不起作用。我不熟悉c和系统调用 这是我的密码 客户端:如何在c语言中通过套接字从文件中读写另一个文件,c,sockets,system-calls,C,Sockets,System Calls,我尝试在客户端读取一个文件,在套接字上写入,然后在服务器端获取de数据,并将其写入另一个文件,但不起作用。我不熟悉c和系统调用 这是我的密码 客户端: struct stat file_stat; FILE *file; //Make connection to server void connect_to(char* localhost, int port){ int socketfd = ssocket(); printf("[+]Server socket cr
struct stat file_stat;
FILE *file;
//Make connection to server
void connect_to(char* localhost, int port){
int socketfd = ssocket();
printf("[+]Server socket created successfully.\n");
sconnect(localhost, port, socketfd);
printf("[+]Connected to Server.\n");
file = fopen("tosend.txt", "r"); //open file
//GET FILE SIZE
//fstat(fdfile, &file_stat);
//printf("File Size: \n%ld bytes\n", file_stat.st_size);
char data[BUFFER_SIZE] = {0};
while (fgets(data, BUFFER_SIZE, file) != NULL)
{
for (int i = 0; i < BUFFER_SIZE; i++)
{
swrite(socketfd, &data, BUFFER_SIZE);
}
}
printf("[+]File data sent successfully.\n");
sclose(socketfd);
}
您应该阅读关于这个主题的众多教程之一:将文件写入套接字与写入二进制数据没有什么不同。唯一不可忘记的是:接收器不知道要读取多少字节,所以应该首先发送文件大小(int或long),然后发送数据。接收器必须首先接收文件大小(根据您选择的int或long),然后知道从套接字读取和写入文件的字节数。
//while (1)
//{
newsockfd = accept(sockfd,NULL,NULL);
//INIT
FILE *fp;
char *filename = "tosend2.c";
char buffer[BUFFER_SIZE];
//write file
fp = fopen(filename, "w");
read(newsockfd, &buffer, BUFFER_SIZE);
write(1, buffer, BUFFER_SIZE);
fprintf(fp, "%s\n", buffer);
bzero(buffer, BUFFER_SIZE);
close(newsockfd);
close(sockfd);
return 0;