套接字循环读写

本文关键字:读写 循环 套接字 | 更新日期: 2023-09-27 18:23:47

我想在无限循环中读写套接字。

当我在第一个循环中编写一个流式传输请求时,我可以立即读取响应。

但对于其他循环,networkStream.DataAvailable总是false

我怎样才能连续地读写套接字。

    static void ReadWriteSocket()
    {
        string requestString = "GET /WebApplication.UI HTTP/1.1 'r'n" +
                               "Host: 172.17.107.30 'r'n" +
                               "Connection:close 'r'n'r'n";
        client = new TcpClient();
        client.Connect(new IPEndPoint(IPAddress.Parse("172.17.107.30"), 80));
        byte[] buffer = System.Text.Encoding.Default.GetBytes(requestString);
        byte[] readBuffer = new byte[1024];
        using (MemoryStream ms = new MemoryStream())
        {
            while (true)
            {
                var networkStream = client.GetStream();
                networkStream.Write(buffer, 0, buffer.Length);
                networkStream.Flush();
                int recievedByte = 0;
                if (networkStream.DataAvailable)
                {
                    while ((recievedByte = networkStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                    {
                        ms.Write(readBuffer, 0, recievedByte);
                    }
                }
                Console.WriteLine(System.Text.Encoding.Default.GetString(ms.ToArray()));
            }
        }
    }

套接字循环读写

我终于找到了漏洞。

tcp连接由http标头关闭连接:关闭

所以服务器不会响应我的新请求。

我将相应的标题更改为连接:保持活动

谢谢。