Я пытаюсь отправить файл AMR размером 4063 байта (только для тестирования) с моего CentOS VPS
nc IP 45500 < sample.amr
Но когда приложение получает, оно просто показывает вырезанные данные:
1448: #!AMR-WB
Ô_Æ ÅѤm^8E•Ì^^ìÖõ¾_€°
2617:
Странная вещь: если я редактирую файл AMR и удаляю отмеченный символ:

И снова отправьте тот же файл AMR, который я получаю:
1448: #!AMR-WB
Ô_Æ ÅѤm^8E•Ì^^ìÖõ¾_€°ÀžH¯ë2Çc oÚÖɾøy$Ý
2616: ¢Khw^è“ʺ\?¬šJ£<é<'
.. больше данных, в частности, до следующего NUL-символа

Это код моего сокета onClientRead
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
received,a: string;
size,i: Integer;
AnsiStr: String;
Bytes: array[0..2048*256] of Byte;
begin
Size := Socket.ReceiveLength;
Socket.ReceiveBuf(Bytes[0], Size);
SetString(AnsiStr, PAnsiChar(@Bytes[0]), Size);
received := IntToStr(Size)+': '+AnsiStr;
Memo1.Lines.Add(received);
Memo1.Lines.Add(' ');
end;
Я полагаю, что это вызывает команда SetString
, но не знаю, как получить все данные. Я просто хочу получить весь файл и скопировать его в новый файл AMR на моей стороне.
Дополнительно:
Файл, который я пытаюсь отправить с моего сервера на мой компьютер, находится здесь:
http://techslides.com/demos/samples/sample.amr