【问题标题】:C# socket StreamReader.ReadToEnd wait foreverC# 套接字 StreamReader.ReadToEnd 永远等待
【发布时间】:2018-10-20 17:58:44
【问题描述】:

在通用 Windows 平台 (UWP) 应用程序中,我正在尝试使用套接字将对象发送到 Windows 窗体程序:

public void CreateListener()
    {
        TcpListener listener = new TcpListener(IPAddress.Any, port);
        listener.Start();

        while (true)
        {
            if (listener.Pending())
            {
                var childSocketThread = new Thread(() =>
                {
                    string data = null;
                    var Client = listener.AcceptTcpClient();
                    using (NetworkStream ns = Client.GetStream())
                    using (StreamReader sr = new StreamReader(ns))
                    {
                        data = sr.ReadToEnd();
                        var Items = JsonConvert.DeserializeObject<Models.Orders>(data);
                        Process(Items);
                        ns.Flush();
                        ns.Close();
                    }
                });
                childSocketThread.IsBackground = true;
                childSocketThread.Start();
            }
            else
            {
                Thread.Sleep(50); //<--- timeout
            }
        }
    }

但是接收对象卡在ReadToEnd 并且永远不会退出。 我该怎么办?

【问题讨论】:

标签: c# uwp streamreader


【解决方案1】:

似乎您在发送数据时遇到问题,在刷新 StreamWriter 对象后,您必须使用 StreamReader 作为响应。

            Stream streamIn = socket.InputStream.AsStreamForRead();
            StreamReader reader = new StreamReader(streamIn);
            string response = await reader.ReadLineAsync();

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2012-02-24
    • 1970-01-01
    • 2023-04-04
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多