问题标签 [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.
c# - NetworkStream Read 会等待多长时间,然后才会死?
我有一个Read
关于NetworkStream
objeck 的电话,它在Socket.Receive
内部使用。
假设没有数据进入。读取方法退出前多久?
ReceiveTimeout
设置为 0(无限超时)。
如果我拔掉网线怎么办?会退出吗?
c# - .NET NetworkStream 关闭,如何确保读取所有数据?
我有一个开放的 TCP 连接,并使用 NetworkStream.BeginRead() 进行读取。一旦在任一端关闭连接,就会调用回调并且流对象是无用的 - 就像文档说的那样,EndRead() 抛出 IOException 或 ObjectDisposedException 取决于在这种情况下终止连接的一端。
是否保证在最后一次成功的 EndRead(和 re-BegingRead)和断开连接之间没有任何数据丢失,特别是如果我在最后这样做?如果不是,如果我结束连接,我是否必须在断开连接时手动 NetworkStream.Read() 以确保没有任何未读的内容?
c# - 为什么 BufferedStream.Write 会抛出“此流不支持查找操作”?
这让我很困惑。当我什至没有调用它时,我得到一个关于 seek 的错误?
我的代码看起来像这样:
我得到了这个例外:
流是类型System.IO.BufferedStream
。可能会发生什么?
编辑更多信息:
sizeof(uint)==msg.length
在这种情况下。
流被声明为stream = new BufferedStream(new NetworkStream(socket), 1024)
编辑:
就是这样!虽然一个人可以在单个 上读写NetworkStream
,但在切换到 aBufferedStream
时,必须有一个单独的用于读写。显然可以NetworkStream
在同一个套接字上调用构造函数两次来获得它。
如果可以的话,我会同时接受贾斯汀和汉斯的回答,因为一个让我完全理解出了什么问题,另一个让我找到了解决方案。感谢大家!
c# - 您可以通过 TcpClient 发送比 SendBufferSize 更大的文件吗?
我正在试验 .NET 中的 Tcp 连接,我想发送一些大于 TcpClient 对象的 SendBufferSize 比例的数据。是否可以通过简单地写入网络流来发送数据,或者我是否需要将其切成碎片并发送,然后在另一端再次创建它?
c# - 当发送大于 SendBufferSize 的数据时,如何接收数据?
我刚刚问了一个关于如何发送大于 SendBufferSize 的数据的问题,答案是分几部分发送。
我的第二个问题是如何接收这些数据?它会在网络流中完成还是将其分开。
.net - 使用 JSON.Net 从 NetworkStream 反序列化或解析 JSON
我通过 NetWorkStream 将序列化对象发送到另一台计算机,在接收端我想反序列化这些对象。
我将发送许多连续的对象,当我通过 NetworkStream 接收数据时,我如何知道第一个 JSON 文档何时结束以便让 JSON.NET 从接收到的字符串中解析文档?
或者更好的是,有没有办法让 Json.NET 直接从 NetworkStream 读取并反序列化/解析生成的 JSON 文档?
让我知道问候
阿尔伯特
.net - 使用 Json.net 将 .net 对象直接序列化为 NetworkStream
有没有办法让 Json.net 将对象直接序列化为 NetworkStream?
换句话说,让 Json.net 在序列化对象时将序列化结果发送到网络(以流方式)。
我想避免必须将对象序列化到内存,然后通过 NetworkStream 发送它。
有什么想法吗?
问候
c# - 如何将一个巨大的字符串写入 NetworkStream?
从互联网上,我得到了从 NetworkStream 中读取一个巨大字符串的方法。
但是,我找不到如何将大字符串写入 NetworkStream 的示例。
有没有像我们阅读一样的“对称”写作模式?
先感谢您。
asynchronous - BeginReceive / BeginRead 超时
我正在使用 NetworkStream 和 TcpClient 使用 BeginRead 异步接收数据。我需要对此操作应用超时,这样在指定的时间后读取将被中止。
据我所知,NetworkStream 或 TcpClient 不支持此功能-有一个 ReceiveTimeout 属性,但这似乎仅适用于同步等效项-“读取”。
甚至底层的 Socket 类似乎也不支持其 BeginReceive 方法中的超时。
我已经搜索过这个问题,我看到的唯一建议的解决方案是设置另一个后台线程来取消操作,如果它没有在超时期限内完成。这似乎是一个可怕的黑客攻击。肯定有更好的方法吗?
c# - 使用 NetworkStream 的 IRC - 缓冲区填充和行被 chomped
问题是,即使使用了 short.MaxValue 这样大的缓冲区,您实际上也可以填充缓冲区。当您拆分从缓冲区创建的字符串时,最后一个字符串会被压缩,其余的字符串会在下一次读取时出现。
我正在考虑为一行创建一个足够大的缓冲区(根据 RFC2812 是 512 个字符),提取一个子字符串直到第一个“\r\n”,然后将其余数据数组复制到开头缓冲区并使用 offset 参数将更多数据读取到上次迭代未提取的数据的末尾。抱歉,如果这很难理解...
这是最好的解决方案,还是我在这里错过了显而易见的事情?