【发布时间】:2014-04-28 13:46:57
【问题描述】:
我有一个通过 TCP/IP 进行通信的 Socket 代码。我正在与之通信的机器的缓冲区中有缓冲区数据。目前我正在尝试使用此代码获取缓冲区数据。
byte data = new byte[1024];
int recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
但是这段代码只检索了 11 行数据,而机器缓冲区中有更多数据。这是因为我使用了 int recv = sock.Receive(data); 并且数据是 1024 吗?
如果是,如何获取总缓冲区大小并将其检索到字符串中。
【问题讨论】:
-
“而机器缓冲区中有更多数据”:你怎么知道的?
-
您刚刚要求从套接字读取 1024 个字节。您可能需要循环直到它不返回任何数据(0 字节)。
-
如果这 11 行总共是 1024 字节,那就有意义了。
-
@bansi 如何一次接收所有数据?
-
@bansi 确实,您不太可能在一次读取中获得所有数据;因此,接收缓冲区通常不需要很大。