這麼長的故事,我試圖開發一個應用程序,需要與服務器的Tcp連接。在這個領域沒有以前的經驗,我結束了沒有我的功能工作。所以我決定做一個簡單的控制檯應用程序只是爲了檢查我的命令和他們的反應。關於建立連接的部分進行得很順利,關於寫入網絡流的部分也是如此(我認爲),但是當我試圖顯示服務器響應時,我碰到了一堵牆: 每次我的porgram到達必須編寫服務器響應的行時和WriteLine,我的控制檯應用程序全黑,全部文本消失。你能告訴我使用的代碼有什麼問題嗎?直到控制檯顯示響應的部分進展順利,我檢查了一切。我想有服務器的階躍響應爲普通字符串(如果可能的話我猜...)問題與TcpClient服務器響應作爲字符串
static void ServerTalk(TcpClient tcpClient,NetworkStream networkStream, StreamWriter streamWriter, StreamReader streamReader)
{
//Messaging methods:
Console.WriteLine("Client: ");
string message = Console.ReadLine();
streamWriter.WriteLine(message);
streamWriter.Flush();
//Response methode:
byte[] data = new byte[tcpClient.ReceiveBufferSize];
int ret = networkStream.Read(data, 0, data.Length);
string respond = Encoding.ASCII.GetString(data).TrimEnd();
Console.WriteLine("Server: ");
Console.WriteLine(respond);
ServerTalk(tcpClient, networkStream, streamWriter, streamReader);
}
我懷疑您發送的數據顯示爲黑色的數據末尾處有空值。我將在發件人處終止數據並返回('\ n'),然後在接收端只打印字符直到返回。 – jdweng
該方法結束時的遞歸調用呢?這應該如何工作? –
@HughJones @HughJones我只是把它放在一起,以便重新開始整個事情,因爲應用程序要做的所有事情都是在該代碼塊中,其餘代碼都工作並且一次使用,不要以爲我需要這個應用程序來做超出這一點的任何事情。 – soorena12