问题标签 [channel]
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.
java - ReadableByteChannel.read(ByteBuffer dest) 读取上限为 8KB。为什么?
我有一些代码:
- 从 a 读
ReadableByteChannel
入 aByteBuffer
, - 记下传输的字节,
- 暂停几十到几百毫秒,
- 传递
ByteBuffer
到 a 上WritableByteChannel
。
一些细节:
- 两个通道都是 TCP/IP 套接字。
- 总连接读取大小为数十兆字节。
- 源套接字(从中
ReadableByteChannel
获取字节)在同一台机器上。 - HP DL380s 上的 Debian Lenny 64 位
- Sun Java 1.6.0 更新 20
问题是,无论分配多大的 ByteBuffer,使用.allocate()
或.allocateDirect()
,读入 ByteBuffer 的字节数最大为 8KB。我的目标 ByteBuffer 大小是 256KB,这只是一小部分(1/32nd)被使用。大约 10% 的时间只读入 2896 个字节。
我检查了操作系统 TCP 缓冲区设置,它们看起来不错。观察 netstat 关于缓冲区中有多少字节的报告证实了这一点——两者的套接字缓冲区中的数据都超过了 8KB。
这里突出的一件事是 TCP 和 TCP6 的混合,但我认为这应该不是问题。在上面的输出中,我的 Java 客户端位于端口 53404 上。
我尝试设置套接字属性以支持带宽而不是延迟,但没有改变。
当我记录 的值时socket.getReceiveBufferSize()
,它始终只报告 43856 个字节。虽然它比我想要的要小,但它仍然超过 8KB。(这也不是一个非常整数,这是我所预料的。)
我真的很困惑这里有什么问题。理论上,AFAIK,这不应该发生。“降级”到基于流的解决方案是不可取的,尽管如果找不到解决方案,这就是我们接下来要去的地方。
我错过了什么?我能做些什么来纠正它?
wcf - 从 WCF 到 ASP.NET 的回调可能吗?
我有一个托管在 IIS 中的不同盒子中的 Web 服务和托管在 Windows 服务中的 WCF 服务,在不同的盒子中。(N 层方法)。这里,Web 服务是 WCF 服务的客户端。上传文件的请求来自 IIS 托管的 Web 服务,该 IIS 托管的 Web 服务作为回报调用 WCF 服务并进行实际上传。到现在为止还挺好。上传完成后,WCF 服务执行回调(我已将回调存储在字典中,并且我使用过 (InstanceContextMode=InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple))。WCF 服务发送回调。在跟踪查看器中,看起来 ASP.NET 收到了回调,但浏览器中的上传页面(这是最终用户)永远冻结了。我正在使用 larsw 的 ChunkingChannel 绑定。
首先,正如约翰桑德斯在此链接中提到的那样,是否有可能实现上述情景:
“OperationContext.Current.GetCallbackChannel”实际上是做什么的?
谢谢您的帮助。
java - 线程中断未结束对输入流读取的阻塞调用
我正在使用 RXTX 从串行端口读取数据。读取是在以下列方式产生的线程内完成的:
SerialReader 类实现 Runnable 并且只是无限循环,从端口读取数据并将数据构造成有用的包,然后再将其发送到其他应用程序。但是,我已将其简化为以下简单性:
当用户单击停止按钮时,会触发以下功能,理论上应该关闭输入流并打破阻塞的 byteChan.read(buffer) 调用。代码如下:
但是,当我运行此代码时,我永远不会收到 ClosedByInterruptException,一旦输入流关闭,它应该触发。此外,在调用 serial.close() 时执行会阻塞——因为底层输入流仍然阻塞在 read 调用上。我尝试用 byteChan.close() 替换中断调用,这应该会导致 AsynchronousCloseException,但是,我得到了相同的结果。
对我所缺少的任何帮助将不胜感激。
.net - 如何指定 .NET 远程处理将用于执行回调的通道
我有一个客户端(和服务器),在不同的协议上设置了 2 个通道,比如说 X:// 和 Y://。
如果我在需要对客户端执行回调的服务器 (S) 上从客户端 (C) 调用服务(通过远程处理)(因此 S-> C),是否有办法指定要使用的通道?在我的用例中,我希望来自 X:// 的任何调用都通过 X:// 回调,并且任何通过 Y:// 的调用都通过 Y:// 回调。
我当前的解决方案是为 MarshalByRefObjects 的每个通道实现自定义序列化代理(和选择器),在序列化它们时从 SerializationInfo 中删除另一个通道的 URI。如同:
这实际上可行,但感觉不对(例如:依赖填充的 SerializationInfo 中的“channelInfo”字符串)。有谁知道更好的解决方案?我已经通过 RemotingServices.GetObjectData 进行了非常彻底的查看,但仍然无法弄清楚它从哪里获取 URI 列表。
php - 列出频道中已安装的软件包
使用 PHP 的 PEAR,如何检查foo
频道中的包是否bar
已经安装?(假设频道bar
可用,并且已经被“发现”。)像pear list
这样只显示频道中安装的包的东西bar
是理想的。
firefox - FF 扩展:需要一些帮助来观察 POST
我正在尝试编写一个观察 HTTP 请求的扩展,特别是 POST。我无法访问所有这些 - 有些事情正在溜走,我不知道为什么。我认为这是由于其他选项卡、iframe 或 XHR 请求所致。我想做的是创建一个侦听器/处理程序,并通过它汇集所有请求。有人可以帮忙吗?例如:
asp.net - 如何在 asp.net 中从电视调谐器卡流式传输电视频道?
我有带电视调谐器卡的系统。在我的项目中,我想将一个频道从我的系统流式传输到我的 LAN 中的其他用户。
我不知道如何从 TV Tuner Card 流式传输电视频道。
我想将 ASP.NET 与 C# 一起使用。
请帮我找出这个要求的解决方案。
提前致谢。
antlr - 在 antlr 3 中处理隐藏通道
我正在编写用于将一种语言翻译成另一种语言的 ANTRL 语法,但有关使用 HIDDEN 频道的文档非常稀缺。我在任何地方都找不到一个例子。我发现的唯一内容是 www.antlr.org 上的常见问题解答,它告诉您如何访问隐藏频道,但没有告诉您如何最好地使用此功能。目标语言是Java。
在我的语法文件中,我通过如下方式传递空格和注释:
在我的成员部分中,我定义了一种将隐藏通道令牌写入输出 StringStream 的方法...
现在要使用它,我必须在语法中的每个标记之后调用该方法。
肯定有更好的方法吗?
编辑:这是输入语言的一个例子:
go - 如何在 Go 中的动态频道列表中选择输入?
Go 有一种机制可以从多个通道之一进行阻塞读取,即select语句。所以你可以说
将阻塞,直到我们从这两个通道中的任何一个获得输入。非常好。
但这需要我在源代码中指定要轮询多少个频道。如果我有一个通道切片或通道数组并且我想阻塞直到我得到其中任何一个通道的输入怎么办?
c#-4.0 - WCF 客户端 - 客户端何时应关闭通道
在典型的客户端服务应用程序中,服务是 WCF,如何使用服务引用?
例如,您是为每个调用单独实例化服务,还是打开一个并在客户端应用程序的整个生命周期中保留它?(当我提到“实例化服务”时,我的意思是实例化由 svcutil 创建的服务对象)
现在我们在客户端使用了一个服务实例,因为这似乎比每次调用都创建、打开和关闭服务要快,但是现在我徘徊是否可以?这种方法的主要问题是发生超时(或者我们必须打开会话 10 小时)、连接中断等,我们总是必须通过通道执行“IsAlive”以确保一切正常......
如果它有任何相关性,则该应用程序是单线程的,并且身份验证是自定义构建的(通过将身份验证令牌插入标头)。绑定是basicHttp(或ws,对于这种情况并不重要)。