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()就是这样!谢谢! –