我正在尝试通过网络将 mp3 文件发送到由媒体播放器播放的服务器。我到目前为止的代码适用于字符串,但不适用于文件。有人可以告诉我我做错了什么吗?
这是源代码
客户:
procedure TForm1.Button1Click(Sender: TObject);
var
MyStream : TFileStream;
MP3 : TFileName;
Len : Int64;
begin
MP3 := GetCurrentDir + '\Clocks.mp3';
MyStream := TFilestream.Create(MP3, fmOpenRead);
try
Len := Length(MP3);
MyStream.WriteBuffer(Len, SizeOf(Len));
MyStream.WriteBuffer(Pointer(MP3)^, Len * SizeOf(MP3));
MyStream.Position := 0;
TcpClient1.Active := True;
TcpClient1.SendStream(MyStream);
TcpClient1.Active := False;
finally
MyStream.Free
end;
end;
服务器:
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
MP3 : TFileName;
Len: Int64;
begin
//Receives the message from the client
ClientSocket.ReceiveBuf(Len, SizeOf(Len),0);
SetLength(MP3, Len);
ClientSocket.ReceiveBuf(Pointer(MP3)^,Len * SizeOf(MP3), 0);
MediaPlayer1.FileName := MP3;
MediaPLayer1.Open;
MediaPlayer1.Play;
end;
当程序尝试写入流时问题就开始了,所以我什至不确定接收端是否有效
附言。我是一个初级程序员