C#服务器客户端似乎只有一种工作方式
我试图用C#在客户端和服务器之间发送数据。我对这方面还不太熟悉。我在同一台机器上运行这些,因此是localhost 服务器可以从客户机接收数据,但客户机似乎从未收到“是”的答复,即使它已发送 客户端: 客户端向服务器发送数据(“apple”),并应收到回复C#服务器客户端似乎只有一种工作方式,c#,sockets,server,client,C#,Sockets,Server,Client,我试图用C#在客户端和服务器之间发送数据。我对这方面还不太熟悉。我在同一台机器上运行这些,因此是localhost 服务器可以从客户机接收数据,但客户机似乎从未收到“是”的答复,即使它已发送 客户端: 客户端向服务器发送数据(“apple”),并应收到回复 TcpClient client = new TcpClient("localhost", 1334); //Currently localhost StreamReader sr = new StreamRea
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();
服务器:
服务器将侦听数据。当它收到数据时,它会检查是否是苹果,然后回答“是”
感谢所有帮助。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();
}
我看到两件事:在
client.Close()之前在服务器端添加sw.Flush()
由于您尚未发布全部代码,因此不清楚客户端是否在等待响应,afaikReadLine()
是一个非阻塞调用-如果服务器没有及时响应,它将继续执行。@Furmek“在客户端的前面添加一个sw.Flush();”就是这样!非常感谢。
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();
}