草庐IT

Networking

全部标签

java - netty如何确定读取何时完成?

下面是回显服务器的ChannelHandler。Netty框架将调用channelReadComplete()方法来通知处理程序,对channelRead()的最后一次调用是当前批处理中的最后一条消息。我的问题是,由于数据是在中继线上传输的,Netty如何知道一批消息何时完成? 最佳答案 channelReadComplete()一旦没有更多数据可从底层传输读取,就会被触发。在谈论SocketChannels时,这将是以下两种情况之一:read(...)返回0read(...)得到一个传递给它的缓冲区,该缓冲区有1024个字节要填充

java - 用Java动态查找局域网中的其他主机

不久前,我开发了一个小型局域网聊天应用程序。在Java中允许与其他主机聊天、发送图像等。虽然它只是为了好玩而创建的,但现在它正在我工作的地方使用。目前,应用程序上没有“聊天服务器”。每个客户端在哪里注册、更新它的状态等(我喜欢对称设计的想法,而不是依赖于在其他机器上运行的服务器)。相反,每个主机都是一个客户端/服务器,它有一个包含其他主机主机名的hosts.properties文件,并且-例如-在发送大量消息时向每个主机广播/图片/随便。一开始只有几个主机,所以这个hosts.properties文件不是问题。但随着用户数量的增加,更新该文件的需求有点令人望而生畏。所以现在我决定摆脱它

java - 为什么我使用 JMX 时会收到错误 "connection refused"

我无法连接到JMX对象。以下是我创建JMX对象的方法:publicstaticvoidmain(String...args){MBeanServermbs=ManagementFactory.getPlatformMBeanServer();try{ObjectNamename=newObjectName("org.javasimon.jmx.example:type=Simon");if(mbs.isRegistered(name)){mbs.unregisterMBean(name);}SimonManagerMXBeansimonManagerMXBean=newSimonMan

java - 使文件传输更高效 Java

我有两台无线计算机连接到一个N无线路由器。每台PC的连接速度都在108-150Mbps之间。理论上,在绝对最佳的条件下,我应该能够以13.5MB/s到18.75MB/s的速度传输。第一台计算机(正在发送)使用非常快的SSD,如果我没记错的话,速度约为100MB/s。CPU使用率也保持在20%以下。它在656367毫秒内发送了1960273535个字节(1.8GB)。那是2.8MB/s(108兆位中的22位)。当我打开任务管理器时,我看到只有25-27%的网络连接被使用。我正在寻找可以加快传输速度(通过网络)的任何想法、建议或改进。我正在考虑在线程上从磁盘缓冲文件并从另一个线程发送缓冲数

java - Hazelcast 自动发现如何工作?

我想知道Hazelcast自动发现的工作原理。节点如何找到网络中的其他节点?他们如何知道节点何时死亡? 最佳答案 有3种不同的发现形式:多播。所以我们在网络上四处喊叫,试图找到其他成员tcp/ip:我们需要一些知名的成员。如果这些知名成员中的一个或多个在线,则其他成员可以形成一个集群。aws:我们只需登录aws,读取给定区域内的所有实例,应用一些过滤,剩下的就是众所周知的成员。从那时起,我们依赖于基于tcp/ip的集群。简而言之,这就是自动发现的工作原理。检测节点故障是根据心跳来完成的。因此,我们每x秒向集群中的所有成员发送一条消息

Java 代理身份验证

我有一个在Tomcat6中运行的Java网络应用程序,它从远程URL加载RSS提要。我使用Rome为我处理RSS提要和不同格式。连接部分看起来像这样:try{feedSource=newURL(rssObject.getAsset());}catch(MalformedURLExceptionmue){logger.error(...);throwmue;}try{URLConnectionconnection=feedSource.openConnection();feed=newSyndFeedInput().build(newXmlReader(connection));}cat

java - 我可以关闭并重新打开套接字吗?

我学习了一个使用套接字的例子。在此示例中,客户端向服务器发送请求以打开套接字,然后服务器(监听特定端口)打开套接字,一切正常,套接字从双方(客户端和服务器)“打开”。但我仍然不清楚这东西有多灵活。例如,客户端是否可以关闭一个打开的(从两端)套接字并再次重新打开它(在服务器保持套接字打开的情况下)。服务器是否有可能“知道”客户端关闭了套接字?客户端是否有可能知道服务器端关闭了套接字?已添加:还有一件对我来说很重要的事情。如果应用程序(不是主服务器或客户端)崩溃、异常终止、终止,会发生什么情况?它会关闭应用程序端打开的所有套接字吗?添加2:如果套接字一侧的应用程序关闭(终止、关闭、终止)然

Java 丢弃了一半的 UDP 数据包

我有一个简单的客户端/服务器设置。服务器在C中,查询服务器的客户端是Java。我的问题是,当我通过连接发送带宽密集型数据(例如视频帧)时,它会丢弃多达一半的数据包。我确保我在服务器端正确地分段了udp数据包(udp的最大有效负载长度为2^16)。我验证了服务器正在发送数据包(printfsendto()的结果)。但是java似乎没有得到一半的数据。此外,当我切换到TCP时,所有视频帧都通过了,但延迟开始增加,在几秒钟的运行时间后增加了几秒钟的延迟。有什么明显的我遗漏的吗?我就是想不通。 最佳答案 获取像Wireshark这样的网络工

java - 为什么拒绝连接到本地主机?

我有一台服务器,一台客户端机器连接到该服务器。最近决定用stunnel加密连接,所以现在客户端程序不是直接连接到服务器,而是连接到localhost:8045(我查了一下,这个端口没有被占用)。Java代码:URLurl=newURL("http://localhost:8045/malibu/GetProviders");InputStreamstream=url.openStream();我得到以下信息:java.net.ConnectException:Connectionrefused:connectatjava.net.PlainSocketImpl.socketConnec

java - 检查 IPv4 地址是否在私有(private)范围内

在Python中,使用IPy模块您可以执行以下操作:>>>ip.iptype()'PRIVATE'是否有一个库或简单的方法可以在Java中做同样的事情? 最佳答案 似乎不完全是,但是InetAddress有一些isXX()方法,例如:isAnyLocalAddress()和isSiteLocalAddress() 关于java-检查IPv4地址是否在私有(private)范围内,我们在StackOverflow上找到一个类似的问题: https://stack