私のソケットクライアントがサーバに返信していたデータと同じデータを受信していないことに気がつきました。テキストは8192文字後に切り捨てられます。ソケットで実際に長いメッセージが受信される
私は気づいていない制限がありますか?どのように私はこれを過去にするのですか?
クライアントは、このコードを使用しています。
//Send and Receive
public string sendAndReceiveMSG(string msg)
{
try
{
NetworkStream serverStream = clientSocket.GetStream();
string sendresponse = sendMSG(msg, serverStream);
if (sendresponse == "ConnectionCrash")
{
return sendresponse;
}
else if (sendresponse == "OK")
{
string receiveresponse = receiveMSG(serverStream);
return receiveresponse;
}
return "UnknownErrorInternal";
}
catch (Exception ex)
{
return "UnknownErrorInternal";
}
}
//Send msg
private string sendMSG(string msg, NetworkStream serverStream)
{
try
{
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(msg);
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
return "OK";
}
catch (Exception ex)
{
endSock();
return "ConnectionCrash";
}
}
//Receive msg
private string receiveMSG(NetworkStream serverStream)
{
try
{
byte[] inStream = new byte[10025];
int buffSize = clientSocket.ReceiveBufferSize;
dynamic bytesRead = serverStream.Read(inStream, 0, buffSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream, 0, bytesRead);
return returndata;
}
catch (Exception ex)
{
endSock();
return "ConnectionCrash";
}
}
クライアントはそのようにように、サーバーからの応答を取得。
string recv = client.sendAndReceiveMSG("someRequest");
読み込むデータがまだある間は、ループスルーして読み込みを続ける必要があります。 – zimdanen
ストリームと呼ばれる理由があります。バイトは一方の端に入り、もう一方の端から出てきます。ヨーダは「メッセージはありません」と言います。 – HABO
なぜbytesReadは動的ですか? –