サーバー上にファイル (クライアントが送信する必要があるファイル) が存在するかどうか、および応答を返すために存在するかどうかを確認するサーバー アプリケーションを作成するタスクがあります (メッセージ - 「このファイルが存在します。」)。これには問題があります。サーバーは正しいことを行っていますが、BinaryReader を使用して応答を読み取ろうとすると、次の例外が返されます。
Unable to read beyond the end of the stream
クライアントからのコードは次のとおりです。
private void OnRequest()
{
try
{
IPEndPoint serverIp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 55555);
TcpClient client = new TcpClient();
client.Connect(serverIp);
if (client.Connected)
{
AddLog("Connected!");
writer = new BinaryWriter(client.GetStream());
writer.Write("request");
GetFileText();
writer.Write(fileText);
writer.Flush();
AddServerResponse(GetResponse(client.Client));
writer.Close();
client.Close();
AddLog("Disconnected!");
}
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
それが GetResponse メソッドです。
private string GetResponse(Socket server)
{
NetworkStream stream = new NetworkStream(server);
reader = new BinaryReader(stream);
string message;
do
{
message = reader.ReadString();
}
while (message != null);
reader.Close();
return message;
}
そして、ここでクライアントにデータを送信する方法:
private void SendDataToClient(string data, Socket client)
{
if (client != null && client.Connected)
{
NetworkStream stream = new NetworkStream(client);
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(data);
writer.Flush();
writer.Close();
stream.Close();
}
}
私を手伝ってくれますか?