问题标签 [socketchannel]

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 投票
2 回答
1221 浏览

sockets - 如何使用netty在套接字服务中传输大字节流(如图像)

我的服务器为客户端提供套接字服务。我的服务器DecoderHandlerFrameDecoder. 当我的客户端向服务器发送小数据(小于约 1024 字节)时,服务器成功解码,但是当我的客户端尝试将图像的内容写入服务器时,出现 index-out-bound-exception .

我猜解码器选择的缓冲区必须有大小限制。于是我打印出了参数——buffer的类。

结果是:

class org.jboss.netty.buffer.BigEndianHeapChannelBuffer

我想问一下:我可以将缓冲区的类型从更改BigEndianHeapChannelBufferDynamicChannelBuffer,以便我可以通过套接字传输图像。或者有没有人可以提供其他有效的方法来帮助解决我的“通过netty通过套接字传输大数据”的问题。

我真的需要你的意见。再次感谢!


来自服务器的堆栈跟踪:

来自客户端的堆栈跟踪:

0 投票
1 回答
4269 浏览

java - 在没有显式取消密钥的情况下获取 java.nio.channels.CancelledKeyException

我一直被java.nio.channels.CancelledKeyException抛出:

但是,我java.nio.channels.SelectionKey.cancel()在任何时候都没有明确地调用。

一条重要的信息是,这发生在我在 EC2 上运行的测试环境中,并且在多台机器之间进行通信,我突然终止了作为通信目标的机器中的进程。但是,我无法将这个异常出现时间与任何启动的进程终止相关联。如果底层套接字断开连接或存在网络连接问题,会发生这种情况吗?

谢谢

0 投票
0 回答
275 浏览

java - Android 客户端应用程序使用 socketChannel 与普通的多线程服务器通信

我有一个 android JAVA 应用程序,它使用普通的 TCP serversocket(多线程)与第三方服务器通信,如果我在 android 应用程序中使用 socketChannel 客户端,它会工作吗?该应用程序曾经使用套接字客户端,如果它运行正常,则可以正常工作,无论如何,如果路由器或网络具有QOS控制,并且发送比特率大于实际(我正在尝试自动检测实际吞吐量) ,即使我稍后将 QOS 更改为高于发送 bps,即使经过相当长的时间,客户端套接字写入即使是 1K 或 2K 数据仍然需要 1000+ 或 2000+ ms,这导致性能非常糟糕。

我想知道 socketchannel 是否是客户端的一个很好的解决方案,而无需更改服务器。

谢谢 :)

0 投票
1 回答
1173 浏览

java - NIO Server/Client发送图片问题

嘿伙计们,我一直在尝试制作 NIO 服务器/客户端程序。我的问题是服务器只发送 14 个字节然后它不会再发送任何东西。我已经坐了很长时间,以至于我真的什么都看不到了,因此决定看看这里是否有人能看到问题

服务器代码:

客户:

0 投票
2 回答
236 浏览

java - 关闭客户端后通过 SocketChannel 向客户端发送数据

我有一个客户端和一个服务器应用程序,其中客户端发送一个数据字节,表示用户已关闭客户端窗口并终止了客户端程序。问题是服务器可能会在丢弃该客户端之前向该客户端发送最后一个通知。如果服务器在阻塞模式下使用 SocketChannel 的 write 方法,它会无限期地阻塞还是被忽略?我应该让客户端在断开连接之前等待“断开连接确认”吗?

0 投票
1 回答
791 浏览

c++ - 客户端服务器应用程序的通道

我有使用 windsock 传输数据的客户端服务器程序,但我需要类似客户端 - 通道 - 服务器的东西,其中通道将从 clinet 检索请求或服务器将处理它,并且 id 在那个时候通道很忙它将存储该请求在队列中。我希望频道作为一个单独的应用程序。我对此有一点想法:

我想把它做成一个不同的应用程序或一个 dll 文件,但我不知道如何使用 dll 文件和其他如果我使用套接字它会像客户端或服务器一样。那么有没有更好的方法或从哪里开始呢?我知道 boost:asio 和其他库,但我需要 c++ 标准库中的一些东西。

0 投票
1 回答
2679 浏览

tcp - Netty Channel 的状态转换是什么?

Netty 通道有多种状态,但我无法找到有关实际状态转换的任何文档。我可以找到的最接近 Netty 3.2.x 系统的任何文档在 这里

我能够在 此处找到通道可能处于的状态。

然而,没有任何东西可以描述通道从一种状态到另一种状态的正常转换。似乎并非所有通道都会进行所有可能的状态转换。

0 投票
1 回答
586 浏览

java - java nio socketchannel:客户端到多个服务器

我的项目实际上非常基本,但我找不到正确的信息(即:我只能找到如何创建一个接受多个客户端的服务器)。

这个想法很简单:
我想创建一个客户端来连接到多个服务器,并从中查询内容+等待自主消息。
给出一个粗略的想法,我想创建一个简单的程序,通过创建与它们的 SSH 连接(使用 Jsch)来监控多个服务器,进行登录,每分钟发送 1 个命令以检索服务器上的所有警报。并且服务器也会在它们出现时立即发送警报。

那么我的问题是:有没有人有任何关于如何进行的例子?任何教程?(谷歌没有太大帮助,但也许我没有足够努力)。

注意:我已经能够在线程中使用常规套接字来做同样的事情,但是由于我想轮询数千台服务器,我被告知打开相等数量的线程+套接字是个坏主意......

0 投票
2 回答
9038 浏览

java - 有没有办法在套接字通道上取消注册选择器

这是一个非常直接的问题,但我发现需要取消注册一个选择器,它可以俯瞰我的 java 套接字通道。

我稍后可以在程序中调用类似的东西

并且选择器将不再捕获该套接字通道的数据键。考虑到我的服务器/客户端设计,这将使我的生活更轻松。

0 投票
1 回答
1316 浏览

java - SocketChannel:中断关闭所有打开的通道

我有以下情况:

  • 服务器打开一个 ServerSocketChannel 并接受客户端连接。
  • 每个连接(socketA)都在一个新线程中处理。
  • 在线程内部,我打开一个新的 SocketChannel (socketB),它连接另一台服务器。
  • 原来的客户端连接(socketA)此时处于空闲状态。
  • 新的 SocketChannel 从服务器读取数据(阻塞)。

现在我中断线程。我预计 socketB 将被中断并关闭,而 socketA 将继续工作。不幸的是socketA也会被中断。

知道可能是什么问题吗?

我使用以下测试方法来重现该行为: