繁体   English   中英

读取具有未知字节大小的 TCP/IP 套接字 Stream C#

[英]Reading TCP/IP Socket Stream with an unknown byte size C#

我正在尝试通过 TCP/IP 套接字连接从服务器接收 stream 并且响应的长度并不总是已知的。

我收到的结束方法如下:

                    string resp = "";

                    do
                    {
                        bytesRec = clientSender.Receive(bytes);
                        resp += Encoding.UTF8.GetString(bytes, 0, bytesRec);
                    }
                    while (bytesRec != 0);
                    
                    return resp;

但是发生了两件奇怪的事情,

  1. 当它看起来要进行第二次接收时,服务器大约需要 5 秒才能响应。 我知道这是与代码相关的,因为当我使用 3rd 方终端进行通信时,不会发生这种延迟
  2. 当我到达 stream (byteRec == 0) 的末尾时,套接字发生了一些事情,我可以再发送请求。 我必须断开连接并重新连接(这不是一个选项,因为它需要在发送请求之前发送登录数据包)

提前感谢您的任何见解!

更简单的方法是使用 TcpClient。

string resp;
TcpClient tcpClient = new TcpClient();
tcpClient.Connect("hostname", 21);
StreamReader streamReader = new StreamReader(tcpClient.GetStream());
if(tcpClient.Connected)
    resp = streamReader.ReadToEnd(); //or streamReader.ReadLine();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM