问题标签 [networkstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
564 浏览

c# - NetworkStream Read 会等待多长时间,然后才会死?

我有一个Read关于NetworkStreamobjeck 的电话,它在Socket.Receive内部使用。

假设没有数据进入。读取方法退出前多久? ReceiveTimeout设置为 0(无限超时)。

如果我拔掉网线怎么办?会退出吗?

0 投票
1 回答
2087 浏览

c# - .NET NetworkStream 关​​闭,如何确保读取所有数据?

我有一个开放的 TCP 连接,并使用 NetworkStream.BeginRead() 进行读取。一旦在任一端关闭连接,就会调用回调并且流对象是无用的 - 就像文档说的那样,EndRead() 抛出 IOException 或 ObjectDisposedException 取决于在这种情况下终止连接的一端。

是否保证在最后一次成功的 EndRead(和 re-BegingRead)和断开连接之间没有任何数据丢失,特别是如果我在最后这样做?如果不是,如果我结束连接,我是否必须在断开连接时手动 NetworkStream.Read() 以确保没有任何未读的内容?

0 投票
2 回答
6818 浏览

c# - 为什么 BufferedStream.Write 会抛出“此流不支持查找操作”?

这让我很困惑。当我什至没有调用它时,我得到一个关于 seek 的错误?

我的代码看起来像这样:

我得到了这个例外:

流是类型System.IO.BufferedStream。可能会发生什么?

编辑更多信息:

sizeof(uint)==msg.length在这种情况下。
流被声明为stream = new BufferedStream(new NetworkStream(socket), 1024)

编辑:

就是这样!虽然一个人可以在单个 上读写NetworkStream,但在切换到 aBufferedStream时,必须有一个单独的用于读写。显然可以NetworkStream在同一个套接字上调用构造函数两次来获得它。

如果可以的话,我会同时接受贾斯汀和汉斯的回答,因为一个让我完全理解出了什么问题,另一个让我找到了解决方案。感谢大家!

0 投票
2 回答
1074 浏览

c# - 您可以通过 TcpClient 发送比 SendBufferSize 更大的文件吗?

我正在试验 .NET 中的 Tcp 连接,我想发送一些大于 TcpClient 对象的 SendBufferSize 比例的数据。是否可以通过简单地写入网络流来发送数据,或者我是否需要将其切成碎片并发送,然后在另一端再次创建它?

0 投票
5 回答
4001 浏览

c# - 当发送大于 SendBufferSize 的数据时,如何接收数据?

我刚刚问了一个关于如何发送大于 SendBufferSize 的数据的问题,答案是分几部分发送。

我的第二个问题是如何接收这些数据?它会在网络流中完成还是将其分开。

第一个问题:你能通过 TcpClient 发送比 SendBufferSize 更大的文件吗?

0 投票
1 回答
1273 浏览

.net - 使用 JSON.Net 从 NetworkStream 反序列化或解析 JSON

我通过 NetWorkStream 将序列化对象发送到另一台计算机,在接收端我想反序列化这些对象。

我将发送许多连续的对象,当我通过 NetworkStream 接收数据时,我如何知道第一个 JSON 文档何时结束以便让 JSON.NET 从接收到的字符串中解析文档?

或者更好的是,有没有办法让 Json.NET 直接从 NetworkStream 读取并反序列化/解析生成的 JSON 文档?

让我知道问候

阿尔伯特

0 投票
1 回答
648 浏览

.net - 使用 Json.net 将 .net 对象直接序列化为 NetworkStream

有没有办法让 Json.net 将对象直接序列化为 NetworkStream?

换句话说,让 Json.net 在序列化对象时将序列化结果发送到网络(以流方式)。

我想避免必须将对象序列化到内存,然后通过 NetworkStream 发送它。

有什么想法吗?

问候

0 投票
1 回答
949 浏览

c# - 如何将一个巨大的字符串写入 NetworkStream?

从互联网上,我得到了从 NetworkStream 中读取一个巨大字符串的方法。

但是,我找不到如何将大字符串写入 NetworkStream 的示例。

有没有像我们阅读一样的“对称”写作模式?

先感谢您。

0 投票
2 回答
12018 浏览

asynchronous - BeginReceive / BeginRead 超时

我正在使用 NetworkStream 和 TcpClient 使用 BeginRead 异步接收数据。我需要对此操作应用超时,这样在指定的时间后读取将被中止。

据我所知,NetworkStream 或 TcpClient 不支持此功能-有一个 ReceiveTimeout 属性,但这似乎仅适用于同步等效项-“读取”。

甚至底层的 Socket 类似乎也不支持其 BeginReceive 方法中的超时。

我已经搜索过这个问题,我看到的唯一建议的解决方案是设置另一个后台线程来取消操作,如果它没有在超时期限内完成。这似乎是一个可怕的黑客攻击。肯定有更好的方法吗?

0 投票
2 回答
430 浏览

c# - 使用 NetworkStream 的 IRC - 缓冲区填充和行被 chomped

问题是,即使使用了 short.MaxValue 这样大的缓冲区,您实际上也可以填充缓冲区。当您拆分从缓冲区创建的字符串时,最后一个字符串会被压缩,其余的字符串会在下一次读取时出现。

我正在考虑为一行创建一个足够大的缓冲区(根据 RFC2812 是 512 个字符),提取一个子字符串直到第一个“\r\n”,然后将其余数据数组复制到开头缓冲区并使用 offset 参数将更多数据读取到上次迭代未提取的数据的末尾。抱歉,如果这很难理解...

这是最好的解决方案,还是我在这里错过了显而易见的事情?