我有兩個軟件,一個是服務器,另一個是客戶端界面。NetworkStream寫不新線,如果不是線程睡
在我的服務器我正在和處理請求,然後通過我寫了一個方法返回一個字符串「回覆」
public static void reply(string buffer, NetworkStream stream)
{
stream.Write(Encoding.ASCII.GetBytes(buffer), 0, buffer.Length);
}
我遇到的問題是,例如,如果我是做下面的代碼
for(int i = 0; i<5; i++){
reply("SOME REPLY", stream);
}
上面的代碼會寫隨機newlined線回客戶端這樣的:
SOME REPLY
SOME REPLYSOME REPLY
SOME REPLY
SOME REPLYSOME REPLYSOME REPLY
SOME REPLYSOME REPLY
SOME REPLY
SOME REPLY
如果我在forloop中放置了一個200ms的Thread.Sleep調用,它將正確地更新響應。 在客戶端下面的代碼是如何我們正在從服務器讀取打印到控制檯:
Byte[] bytes = new Byte[256];
NetworkStream stream = endpoint.GetStream();
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
Console.WriteLine(System.Text.Encoding.ASCII.GetString(bytes, 0, i));
}
這是使用['BinaryWriter'](http://msdn.microsoft.com/en-us/library/yzxa6408(v = vs.110).aspx)的地方。它會爲您寫入前導長度字節。 – 2014-09-03 16:04:02
謝謝,我實際上嘗試過「\ n」沒有成功,但我不相信我轉而使用「writ」而不是「writeline」。你的固定工作很好。 – user2887749 2014-09-03 19:41:35
如果您使用的是Windows,\ n需要\ r \ n - 特別是在.NET中 - 請參閱Environment.NewLine屬性。 – t0yk4t 2014-09-03 20:47:27