TCP 服务器客户端上的 fread 问题
problem with the fread on TCP server client
我正在构建一个应用程序 TCP 服务器客户端,我想将二进制文件发送到 server/client(所以我不想使用发送和接收)但我有一个问题,我想阅读我客户端的文件描述符不起作用我不明白为什么因为服务器正确接受客户端所以我有这个功能:
bool accept_and_read_client(){
struct sockaddr_in new_client = { 0 };
socklen_t length = sizeof(new_client);
int val_return = accept(sock_fd, (struct sockaddr*)&new_client, &length);
if(val_return < 0){
syserr("error of accept");
return true;
}
printf("accept of client successful\n");
client_array[0].fd = val_return;
size_t nbread;
client_array[0].file = fdopen(client_array[0].fd, "w+");
nbread = fread(&val_return, sizeof(char), sizeof(MAX_BUFF), client_array[0].file);
if(nbread < -1){
syserr("fread");
return true;
}
printf("number i read : %ld\n", nbread);
return false;
}
当我启动服务器时,服务器等待客户端,当我进行 ./client 测试时,服务器说:
accept of client successful
fread: Success
所以函数 fread 失败了。
在 client.c 我做了这样的 fwrite:
...
FILE* fdc = fdopen(sock_fd, "w+");
if(fdc == NULL){
syserr("error of fdopen");
return 1;
}
printf("%s\n", argv[1]);
size_t nb_write = fwrite(argv[1], sizeof(*argv), strlen(argv[1]), fdc);
printf("number i write: %ld\n", nb_write);
if(fflush(fdc)){
syserr("fflush");
}
如果要查看客户端结构:
struct client{
int fd;
// char buffer[MAX_BUFF];
FILE* file;
};
struct client client_array[MAX_CLIENTS];
如果有人知道为什么 fread 不起作用请告诉我
我正在构建一个应用程序 TCP 服务器客户端,我想将二进制文件发送到 server/client(所以我不想使用发送和接收)但我有一个问题,我想阅读我客户端的文件描述符不起作用我不明白为什么因为服务器正确接受客户端所以我有这个功能:
bool accept_and_read_client(){
struct sockaddr_in new_client = { 0 };
socklen_t length = sizeof(new_client);
int val_return = accept(sock_fd, (struct sockaddr*)&new_client, &length);
if(val_return < 0){
syserr("error of accept");
return true;
}
printf("accept of client successful\n");
client_array[0].fd = val_return;
size_t nbread;
client_array[0].file = fdopen(client_array[0].fd, "w+");
nbread = fread(&val_return, sizeof(char), sizeof(MAX_BUFF), client_array[0].file);
if(nbread < -1){
syserr("fread");
return true;
}
printf("number i read : %ld\n", nbread);
return false;
}
当我启动服务器时,服务器等待客户端,当我进行 ./client 测试时,服务器说:
accept of client successful
fread: Success
所以函数 fread 失败了。
在 client.c 我做了这样的 fwrite:
...
FILE* fdc = fdopen(sock_fd, "w+");
if(fdc == NULL){
syserr("error of fdopen");
return 1;
}
printf("%s\n", argv[1]);
size_t nb_write = fwrite(argv[1], sizeof(*argv), strlen(argv[1]), fdc);
printf("number i write: %ld\n", nb_write);
if(fflush(fdc)){
syserr("fflush");
}
如果要查看客户端结构:
struct client{
int fd;
// char buffer[MAX_BUFF];
FILE* file;
};
struct client client_array[MAX_CLIENTS];
如果有人知道为什么 fread 不起作用请告诉我