ビット/秒単位で転送速度を計算したい。送信された合計バイト数を保持する変数がありますが、3 がタイマーを実装する ac 関数であるかどうか、および while ループが送信中に実行されている時間を計算できるかどうかはわかりません。何か案は?
サーバ
int recv_file(int ax25_socket)
{
const char* filename = FILE_NAME;
int rval;
char buf[4000];
FILE *file = fopen(filename, "wb");
if (!file)
{
printf("Can't open file for writing");
return;
}
do
{
rval = read(ax25_socket, buf, sizeof(buf));
if (rval < 0)
{
printf("Can't read from socket");
fclose(file);
return;
}
if (rval == 0)
break;
int off = 0;
do
{
int written = fwrite(&buf[off], 1, rval - off, file);
if (written < 1)
{
printf("Can't write to file");
fclose(file);
return;
}
off += written;
}
while (off < rval);
}
while(1);
fclose(file);
}
クライアント
int send_file(int ax25_socket)
{
char buf[1024];
//const char* filename = FILE_NAME;
FILE *file = fopen(FILE_NAME, "rb");
if (!file)
{
printf("Can't open file for reading");
return;
}
else
{
printf("Found file: %s\n",FILE_NAME);
}
while (!feof(file))
{
int rval = fread(buf, 1, sizeof(buf), file);
if (rval < 1)
{
printf("Can't read from file");
fclose(file);
return 0;
}
else
{
printf("Reading %d bytes from file!\n",rval);
}
int off = 0;
do
{
int sent = write(ax25_socket, &buf[off], rval - off);
if (sent < 1)
{
printf("Can't write to socket");
fclose(file);
return 0;
}
else
{
printf("writing to socket %d bytes\n",sent);
}
off += sent;
}
while (off < rval);
}
fclose(file);
return 1;
}