私は過去数日間C#でTcpClientを使用する方法を学び、tcpで文字列(メッセージ)を送信できました。今日は、テキストファイルを送信しようとしました(つまり、クライアントがファイルを受信して同じフォルダに書き込むことになりました)。それは1つの問題を除いて働いた - メッセージの後にTONのヌルバイトがある。ここで私が何を意味するかです:TCPを介してファイルを送信するときに余分なNullバイトがたくさんあります
元のテキストファイルの内容:http://i.imgur.com/UCO3jvL.png
受信したテキストファイルの内容:http://i.imgur.com/6vucz40.png
私は、受信したファイルのサイズを見て、そして長さは65536の文字でした。私は、TCPパケットの最大サイズが65535であることを知っています。私の考えでは、自分のコードのなかには、必要な量だけではなく、パケットの最大サイズを使用するものがあります。ここで
は、クライアントにファイルを送信し、サーバからの私のコードです:ここでは
if(message.Contains("getFile"))
{
byte[] fileBytes = File.ReadAllBytes("text.txt");
stream.Write(fileBytes, 0, fileBytes.Length);
}
は、サーバーからファイルを受信し、ディスクに書き込み、クライアントのために私のコードです:
if(command.Contains("getFile"))
{
byte[] readBuffer = new byte[client.ReceiveBufferSize];
int data = stream.Read(readBuffer, 0, readBuffer.Length);
File.WriteAllBytes("file.txt", readBuffer);
}
そのない程度TCPは、私が思うに、あなたの 'client.ReceiveBufferSize'どのくらいいるのですか?あなたはあなたのファイルに多くのバイトを書きます –
私が間違っていない場合、client.RecieveBufferSizeはファイルの長さと同じに設定する必要がありますか? – rrrrrrrrrrrrrrrr