【发布时间】:2014-04-23 07:00:28
【问题描述】:
我正在尝试用 C# 编写一个简单的客户端/服务器应用程序。以下是发送给我的客户端的示例服务器回复:
reply {20}<entry name="test"/>
其中 {20} 表示完整回复包含的字符数。 在我下面写的代码中,我如何使用这个数字来循环和读取所有字符?
TcpClient tcpClient = new TcpClient(host, port);
NetworkStream networkStream = tcpClient.GetStream();
...
// Server Reply
if (networkStream.CanRead)
{
// Buffer to store the response bytes.
byte[] readBuffer = new byte[tcpClient.ReceiveBufferSize];
// String that will contain full server reply
StringBuilder fullServerReply = new StringBuilder();
int numberOfBytesRead = 0;
do
{
numberOfBytesRead = networkStream.Read(readBuffer, 0, readBuffer.Length);
fullServerReply.AppendFormat("{0}", Encoding.UTF8.GetString(readBuffer, 0, tcpClient.ReceiveBufferSize));
} while (networkStream.DataAvailable);
}
【问题讨论】:
-
您是选择了这种有线格式还是强加于您。如果它是您的选择,我会使用更简单的东西(带前导零的固定大小)
-
有线格式是强加给我的。
标签: c# tcpclient networkstream