Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#服务器客户端似乎只有一种工作方式_C#_Sockets_Server_Client - Fatal编程技术网

C#服务器客户端似乎只有一种工作方式

C#服务器客户端似乎只有一种工作方式,c#,sockets,server,client,C#,Sockets,Server,Client,我试图用C#在客户端和服务器之间发送数据。我对这方面还不太熟悉。我在同一台机器上运行这些,因此是localhost 服务器可以从客户机接收数据,但客户机似乎从未收到“是”的答复,即使它已发送 客户端: 客户端向服务器发送数据(“apple”),并应收到回复 TcpClient client = new TcpClient("localhost", 1334); //Currently localhost StreamReader sr = new StreamRea

我试图用C#在客户端和服务器之间发送数据。我对这方面还不太熟悉。我在同一台机器上运行这些,因此是localhost

服务器可以从客户机接收数据,但客户机似乎从未收到“是”的答复,即使它已发送

客户端: 客户端向服务器发送数据(“apple”),并应收到回复

       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()
ReadLine()
是一个非阻塞调用-如果服务器没有及时响应,它将继续执行。@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();
        }