DataReader-读取长度未知的数据

亚历山大·切耶斯基(Alexander Ciesielski)

我已经与Tomcat Java服务器建立了连接。

发送登录数据后,服务器响应。响应的长度未知。

所以我正在尝试使用DataReader.UnconsumedBufferLength逐字节读取字节

DataReader din = new DataReader(socket.InputStream);
int i = 0;
byte[] b = new byte[64];
await din.LoadAsync(1);
while(din.UnconsumedBufferLength > 0)
{
    din.LoadAsync(1);
    b[i] = din.ReadByte();
    await din.LoadAsync(1)
    i++;
}

这种解决方案有效,我将消息放入字节数组中,但远非理想。相应的Java客户端使用这一行代码

BufferedInputStream inFromServer = new BufferedInputStream(socket.getInputStream());
int read = 0;
byte[] result = new byte[100];    
read = inFromServer.read(result);

我希望在C#中有一个同样简单的解决方案。

法哈德·阿里扎德·诺里(Farhad Alizadeh Noori)

在C#中,您发布的Java代码绝对容易实现。实际上,您当前正在使用的C#版本使用异步调用,这比对流的简单调用要复杂得多。如果要在C#中使用缓冲流而不进行异步调用,则可以只Read在该流上使用。一样容易:

socket.InputStream.Read()

在您的Java代码中,您似乎正在使用大小为100的缓冲区来读取流。您仅读取流的100个字节,而不是一直读取到最后。如果那是您想要的,您可以执行以下操作:

byte[] b = new byte[100];
int readTo = socket.InputStream.Read(b, 0, 100);

另外,如果您想一路走到尽头,请在此处使用Jon Skeet的答案没有比这更好的了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DataReader-读取长度未知的数据

来自分类Dev

通过DataReader读取未知长度

来自分类Dev

从DataReader读取数据时出现OutOfMemoryException

来自分类Dev

使用DataReader从SQL访问数据

来自分类Dev

如何从dataReader列读取Xml值

来自分类Dev

来自pandas_datareader的串联数据

来自分类Dev

DataReader和数据集之间的区别?

来自分类Dev

Sql DataReader 有行但返回空数据

来自分类Dev

从长度未知的UDP套接字读取数据

来自分类Dev

pandas_datareader.DataReader仅返回一个日期的数据

来自分类Dev

SQL DataReader不读取所有列,也不写入文件

来自分类Dev

高效地从DataReader读取一些字节?

来自分类Dev

读取 DataReader 中单列中的每一行

来自分类Dev

从DataReader填充多个数据表。可能吗

来自分类Dev

DataReader(DbCommand)如何处理数据库通信?

来自分类Dev

读取未知长度的线

来自分类Dev

DataReader异常

来自分类Dev

Pandas_datareader错误SymbolWarning:未能读取符号:“ T”,替换为NaN

来自分类Dev

SQL DataReader不会读取所有列,也不会写入文件

来自分类Dev

ADO.NET - SQL 位值“1”仍被 DataReader 读取为“false”

来自分类Dev

使用DataReader时,网络缓冲区中可以存储多少数据

来自分类Dev

Zipline:使用pandas-datareader为非美国金融市场提供Google财经数据框架

来自分类Dev

尝试使用Pandas DataReader提取库存数据时发生SSL错误

来自分类Dev

使用python中的yahoo和pandas_datareader从不同市场获取市场数据

来自分类Dev

使用pandas web.DataReader从整个索引(例如DJIA)中获取数据

来自分类Dev

如何在TCP客户端中读取未知数据长度

来自分类Dev

DataReader返回DBNULL

来自分类Dev

从DataReader到.CSV的列名

来自分类Dev

C#DataReader错误

Related 相关文章

热门标签

归档