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();
}
所有幫助表示讚賞。
我看到兩件事情:在服務器端之前'client.Close添加一個'sw.Flush()'();',因爲你的天堂」 t公佈了整個代碼,不清楚客戶端是否等待響應,afaik「ReadLine()」是非阻塞的調用 - 如果服務器沒有及時響應,它將繼續。 – Furmek
@Furmek「在client.Close();之前在服務器端添加一個sw.Flush()就是這樣!謝謝! –