プレーンテキストを送信しても問題ありません。全て大丈夫。ただし、C# クライアントから画像を送信しようとすると、サーバーは正しいバイト数を受け取りますが、バッファーをファイルに保存すると (バイナリ モード - wb)、常に 4 バイトになります。
関数を使用して C# クライアントで送信しますFile.ReadAllBytes()
。
私の保存コードは次のようになります
FILE * pFile;
char *buf = ReceiveMessage(s);
pFile = fopen (fileName , "wb");
fwrite(buf, sizeof(buf[0]), sizeof(buf)/sizeof(buf[0]), pFile);
fclose (pFile);
free(buf);
私の受信機能は次のようになります
static unsigned char *ReceiveMessage(int s)
{
int prefix;
recv(s, &prefix, 4, 0);
int len = prefix;
char *buffer= (char*)malloc(len + 1);
int received = 0, totalReceived = 0;
buffer[len] = '\0';
while (totalReceived < len)
{
if (len - totalReceived > BUFFER_SIZE)
{
received = recv(s, buffer + totalReceived, BUFFER_SIZE, 0);
}
else
{
received = recv(s, buffer + totalReceived, len - totalReceived, 0);
}
totalReceived += received;
}
return buffer;
}