2017-01-23 36 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(); 
     } 
相关问题