草庐IT

TCP协议

全部标签

java - 如何使用 Apache Camel Netty4 在异步模式下通过已建立的 TCP 连接发回响应?

我在消费者模式下使用Netty4组件(http://camel.apache.org/netty4.html)构建一个具有ApacheCamel路由的微服务。因此,在我的微服务中,我正在构建的这条路由将通过TCP连接接收消息。为此,我这样做了:@Overridepublicvoidconfigure()throwsException{this.from("netty4:tcp://localhost:7000?textline=true&encoding=utf8").process(newProcessor(){@Overridepublicvoidprocess(finalExch

java - 在 Java 中分离协议(protocol)解析器和处理程序

我正在使用一个简单的二进制协议(protocol)。每个数据包由10个字节组成。第一个字节指定数据包类型。使用了很多(~50)种数据包类型。我想为此协议(protocol)编写一个独立于数据包处理的通用解析器。所以解析器应该检测数据包类型并将数据放入适当的数据包类的实例中,该类包含协议(protocol)数据。例如,考虑以下类:当解析器检测到数据包类型1-->newType1()并读取原始字节并设置温度和湿度。对于数据包类型2和所有其他数据包类型也是如此。classPacket{byte[]raw;}classType1extendsPacket{inttemperature;inth

java - Java 配置中的 <tcp-outbound-channel-adapter> 是什么?

我有以下bean的spring集成XML配置我认为java配置中的等价物是@ServiceActivator(inputChannel="input",requiresReply="true")publicTcpSendingMessageHandleroutboundClient(){TcpSendingMessageHandlertcpSendingMessageHandler=newTcpSendingMessageHandler();tcpSendingMessageHandler.setConnectionFactory(clientConnectionFactory());

Java 执行器检查 TCP 连接是否有效

我试图通过在Java中使用执行程序来识别主机是活的还是死的。就我而言,我有多个主机保存在列表中。我的目标是创建具有主机数量的线程并检查它们。当线程与主机建立连接时,主机并没有关闭连接,而是不断发送一个状态码,如50(死)或51(活)。我的问题是线程只能在主机上连接。例如;我有两个主机192.168.1.1和192.168.1.2。线程应该在后台检查它们,但我只能在1.1中连接连接Listhosts=LoadBalancer.getHostList();ExecutorServiceexecutor=Executors.newFixedThreadPool(hosts.size());e

java - Java 中可靠的 UDP 协议(protocol)实现——为什么会这样?

我目前正在使用ReliableUDP协议(protocol)的Java实现,发现here.该项目完全没有教程,所以我发现很难发现问题。我已经设置了客户端和服务器。服务器在localhost:1234上运行,客户端在localhost:1235上运行。服务器首先建立,并循环监听连接-try{ReliableSocketclientSocket=server.socket.accept();InetSocketAddressclientAddress=(InetSocketAddress)clientSocket.getRemoteSocketAddress();Logger.getLog

java - 使用 Java 的 BitTorrent 协议(protocol) - 成功握手后的位字段

成功发送和接收来自多个点的握手后,BitTorrent消息链的下一步是位域消息。bitfield消息如下所示,其中顶行解释了协议(protocol)段的字节大小:我遇到的问题是,几乎所有对等方似乎都在发送与上述表示不同的位域消息!消息往往看起来像这样:size:332,[0,0,0,112,5,127,-1,-1,-1,-1,-5,-1,-1,-1,-1,-1,-17...]第一个问题是我收到的大多数消息都有长度字节:[0,0,0,112]即使在这种情况下接收到的消息总共包含332个字节,而在其他一些情况下,消息可能只有80个字节左右。第二个问题是这些位通常重复-1或其他一些奇怪的负值

java - 使用 SAX (Java) 解析来自单个 TCP 流的多个 XML 消息

我现在使用Java连接到一个TCP端口,一个接一个地流式传输XML文档,每个文档都用分隔。文件标签的开始。演示格式的示例:FredBloggsPeterJones我正在使用org.xml.sax.*接口(interface)。SAX解析适用于第一个文档,但在遇到第二个文档的开头时会抛出异常:Exceptioninthread"main"org.xml.sax.SAXParseException:Theprocessinginstructiontargetmatching"[xX][mM][lL]"isnotallowed.以下骨架类演示了我正在使用的设置:importorg.xml.s

java - Visual VM 中的 RMI TCP Accept、Attach Listener 和 Signal Dispatcher 是什么?

我正在使用VisualVM分析一个程序。我的程序运行了一段时间,最后使用XChart弹出了一些图。显示结果。图表显示后,我注意到VisualVM中有一些Activity线程“RMITCPAccept”、“AttachListener”和“SignalDispatcher”。这些线程是什么?我假设它们仅与VisualVM有关。我说的对吗?? 最佳答案 这篇文章粗略地回答了https://stackoverflow.com/a/7698906/573057如你所想;Attach、Signal和RMITCPAccept用于通过jConso

Wireshark抓包:详解udp协议

通过wireshark这个抓包工具抓取udp协议的报文进行详细的分析。dns默认是基于udp协议的。访问一个域名的过程中,其实就是会做一个域名解析。域名解析用到的就是dns协议(应用层协议)。下面就触发dns的流量,抓取报文看下udp协议的实现:ping一个域名,解析成ip地址,这个过程就会调用dns协议。下面就是抓包抓到的dns协议:首先发了个这样的域名请求,然后网关承担域名解析的作用,回应一个这个域名对应的ip地址是什么。1.双击打开第一个报文:dns协议的默认端口是53端口,源端口是随机的。这个里面没有序号、确认号和标志位都没有。这就是udp协议。基于udp协议之上的是dns协议:2.下

java - 用 Java 实现的 Bittorrent Peer Wire 协议(protocol)

我有几个关于BittorrentPeerWire协议(protocol)的问题。我正在尝试使用thisspec在Java中实现它.在PeerWireProtocol部分,它表示所有整数都是四字节大端值。AFAIKjava使用大端。这是否意味着说我是否要发送阻塞消息窒息:我是否只写入sokcet1后跟0?关于我的第二个问题。当请求一件作品时,我是否认为多个文件是一个大的连续文件?还是考虑单个文件?因为片段长度不会与文件对齐​​,所以一个索引可以同时包含一个文件的结尾和另一个文件的开头?至于我的最后一个问题,当我打开与对等方的连接并发送我的握手时,我是继续请求片段还是请求然后等待一段时间,