2017-01-23 35 views
0

我想在C#中的客戶端和服務器之間發送數據。我對此很新。我在同一臺機器上運行這些,因此是localhost。C#服務器客戶端似乎只能以一種方式

服務器可以從客戶端接收數據,但客戶端即使發送也不會收到yes的回覆。

客戶端: 客戶端向服務器發送數據(「蘋果」),並應收到回覆。

 TcpClient client = new TcpClient("localhost", 1334); //Currently localhost 
     StreamReader sr = new StreamReader(client.GetStream()); 
     StreamWriter sw = new StreamWriter(client.GetStream()); 

     string sendData = "apple"; 
     sw.WriteLine(sendData); 
     sw.Flush(); 

     string data = sr.ReadLine(); 

     if (data != null) 
     { 
     MessageBox.Show("It worked!"); 
     } 
     else 
     { 
      MessageBox.Show("No data."); 
     } 


     client.Close(); 

服務器: 服務器將監聽數據。當它收到數據時,它會檢查它是否是蘋果,然後回覆「是」。

 TcpListener listener = new TcpListener(1334); 
     listener.Start(); 

     while (true) 
     { 
      TcpClient client = listener.AcceptTcpClient(); 
      StreamReader sr = new StreamReader(client.GetStream()); 
      StreamWriter sw = new StreamWriter(client.GetStream()); 

      string request = sr.ReadLine(); 

      if(request == "apple") 
      { 
       Console.WriteLine(request); // Print that to the console so we know it was received okay 
       sw.WriteLine("yes\n"); 
       client.Close(); 
      } 

所有幫助表示讚賞。

+0

我看到兩件事情:在服務器端之前'client.Close添加一個'sw.Flush()'();',因爲你的天堂」 t公佈了整個代碼,不清楚客戶端是否等待響應,afaik「ReadLine()」是非阻塞的調用 - 如果服務器沒有及時響應,它將繼續。 – Furmek

+0

@Furmek「在client.Close();之前在服務器端添加一個sw.Flush()就是這樣!謝謝! –

回答

0

Furmek評論:

我看到兩件事情:增加一個sw.Flush();在服務器端 client.Close();

工作服務器代碼

TcpListener listener = new TcpListener(1334); 
    listener.Start(); 

    while (true) 
    { 
     TcpClient client = listener.AcceptTcpClient(); 
     StreamReader sr = new StreamReader(client.GetStream()); 
     StreamWriter sw = new StreamWriter(client.GetStream()); 

     string request = sr.ReadLine(); 

     if(request == "apple") 
     { 
      Console.WriteLine(request); // Print that to the console so we know it was received okay 
      sw.WriteLine("yes\n"); 
      sw.Flush(); // sw.Flush(); Added here!! 
      client.Close(); 
     } 
相關問題