Tag: networking

最小的java8 nio安全websocket客户端(wss)

我花了很长时间才找到简单的java websocket客户端,可以使用wss并且不会乱七八糟…… 我试过https://github.com/TooTallNate/Java-WebSocket 添加依赖,因为他说,复制SSLClientExample.java用websocket.org echo服务器测试它,但在第84行得到编译错误没有这样的方法setSocket()…(卡在这里) 我试过tyrus(似乎这是一个由oracle直接开发的大型库)但似乎我需要运行一些appserver(websocket容器)才能使用它… 我想知道对于那些需要有netty或glassfish或grizly的websockets来说这么困难吗? 我认为可以使用SSLEngine(wss)和纯java sdk实现一个…有什么我不知道websockets? (我想它非常像普通的sockets)

处理时间,延迟和响应时间的含义和计算公式

任何人都可以从下图中validation处理时间,延迟和响应时间公式。我对响应时间公式有一些疑问。 如果您与我的这些公式有冲突,请给我certificate参考。

在NAT后面进行UDP打孔

我试图在Java中实现UDP-Holepunching的简单草图来测试它的概念,并在稍后的C / C ++应用程序中使用它。 概念: 从维基百科我可以理解这个概念:让A和B成为未定义网络结构背后的客户端,C是众所周知的公共可达服务器。 A向服务器C发送数据包,服务器保存其IP地址和端口。 C将获得A的NAT的公共IP地址。 这样做,A前面的NAT将创建一个路由,将该端口上的所有数据包传递给A. B与A相同,向服务器C发送数据包,然后保存它的地址和端口,B的NAT创建路由,依此类推。 此时,C知道每个客户端的地址和端口。 C将B的地址和端口发送到A,从A发送到B. A向B发送一个数据包,该数据包将被B的NAT拒绝,但这样做会在A的NAT中打开一个“漏洞”,让B的其他数据包通过。 B向A发送一个数据包,它将到达A,因为“洞”之前是“打孔”。 这样做也会在B的NAT中打开一个“洞”,让来自A的更多数据包通过。 现在已经完成了打孔,A和B应该能够相互通信P2P 这一切都优于localhost(这不是一个大惊喜),但在现实世界的例子中,这失败了。 问题: A和B都能够连接到服务器C,服务器C获取其数据包,存储其地址和端口并将其传输到另一个客户端。 但此时它失败了。 A和B无法相互通信。 所以我问自己哪里做错了。 我花了几天时间在google和stackoverflow中搜索工作示例,但我偶然发现的是使用STUN的建议,这不是我想要的。 执行: 下面我将用Java发布我的草图,因为我不知道我的概念或实现是否有问题。 这是服务器的代码: public class Server { public static void main(String[] args) { int port1 = 0, port2 = 0; String address1 = null, address2; byte[] bytes = new byte[1024]; try { […]

当命中JButton连接到服务器时,程序会冻结

我在java中使用TCP进行简单的1v1“私聊”。 目前,每当我使用JButtons时,我都会遇到问题。 这是我第一次尝试使用JButtons和ActionListeners,所以我不是100%肯定这里发生了什么。 我有两个单独的服务器和客户端项目。 要编译这些,它必须是两个单独的项目。 当我尝试按下按钮时出现问题A:启动服务器B:连接到服务器。 按钮冻结,就好像它处于推动状态一样。 在运行服务器并按下按钮时,要“取消”按钮,客户端必须尝试连接。 服务器向客户端发送MOTD,客户端应将其打印到文本窗口。 只有在服务器关闭后才打印出MOTD。 再次,不知道为什么 服务器代码: package net.valid4life.chat; import java.awt.Component; public class Chat implements ActionListener { private static final long serialVersionUID = 1L; private static JFrame mainFrame; private static JPanel contentPane; private static JTextArea chatWindow; private static JTextArea serverWindow; private static JTextField chatBox; private static JTextField portBox; private static […]

在wifi网络上发现客户端

我正在编写一个java应用程序,我需要在任何有线或无线本地网络上快速发现任何其他正在运行的客户端,以便建立TCP连接。 这样做的最佳方法是什么? 是否有可以执行此操作的库或代码片段?

网络订单简称(Java)

我需要为我正在使用Java编写的游戏服务器发送网络订单简称。 我读到了有关网络订单的信息,但是我找不到有关在数据之前发送的短信的任何详细信息。 有人可以向我解释它是什么,以及如何使用Java向客户端发送一个?

Java获取MIB中OID的名称/描述

我正在编写网络管理系统,并且需要能够在从SNMP陷阱接收的OID后面打印出有意义的名称。 由于该系统的性质/大小,在每个正在使用的设备上手动将每个OID映射到有意义的名称并不是一个好主意。 话虽如此,是否有一种免费(商业用途)方式自动将名称/描述与其各自的OID配对,用于MIB中的所有OID; 然后这些配对在Java程序中使用? 换句话说,是否有工具或方法将MIB树转换为可在程序中遍历的Java对象以检索OID的名称/描述? 谢谢

简单UDP广播客户端和服务器在不同的机器上

当两个客户端和服务器UDP广播代码位于同一台PC上时,它们的工作正常。 然而,当我将它们放在同一个WIFI LAN的不同PC上时,根本没有任何事情发生。 我已经设法让两个单独的PC上的多播版本运行良好,但不是这样:(。我已经关闭了两个防火墙,并成功地从两个PC上ping每个。 这个测试背后的想法是这样我可以使用这种方法,因此客户端可以通过发送数据报包(对等点发现)在LAN上找到服务器。 我认为我对主机名或其他东西做错了,但经过一周的谷歌搜索和测试新想法后,我正式将它们全部排除在外:(。 public class Client { private String hostname= “localhost”; private int port=1234; private InetAddress host; private DatagramSocket socket; DatagramPacket packet; public void run() { try { host = InetAddress.getByName(hostname); socket = new DatagramSocket (null); packet=new DatagramPacket (new byte[100], 0,host, port); socket.send (packet); packet.setLength(100); socket.receive (packet); socket.close (); byte[] data = […]

2011年的Java:线程套接字VS NIO:在64位操作系统和最新的Java版本上可以选择什么?

我在StackOverflow和一些博客上阅读了几篇关于java.net vs java.nio的post。 但我仍然无法理解何时应该更喜欢NIO而不是螺纹sockets。 你能否在下面检查我的结论并告诉我哪些不正确以及哪些错过了? 因为在线程模型中,您需要为每个活动连接专用一个线程,并且每个线程为其堆栈提供大约250千字节的内存,使用每插槽线程模型,您将在大量并发连接上快速耗尽内存。 与NIO不同。 在现代操作系统和处理器中,可以认为大量活动线程和上下文切换时间对于性能几乎无关紧要 NIO的整个吞吐量可能更低,因为异步NIO库在高负载环境中使用的select()和poll()比唤醒和放入hibernate线程更昂贵。 NIO一直比较慢,但它允许您处理更多的并发连接。 它本质上是一个时间/空间权衡:传统IO速度更快但内存占用更大,NIO速度更慢但使用的资源更少。 Java每个并发线程的硬件限制为15000/30000,具体取决于JVM,这会将每个连接模型的线程限制为此并发连接数最大,但JVM7将没有此限制(无法确认此数据)。 所以,作为结论,你可以这样: 如果你有数万个并发连接 – 除非请求处理速度是你的关键因素,否则NIO是更好的选择 如果你的数量少于 – 每个连接的线程是一个更好的选择(假设你可以负担大量的RAM来保持所有并发线程的堆栈达到最大值) 使用Java 7,您可能希望在任何一种情况下都使用NIO 2.0。 我对么?

如何获取Java7应用程序的CPU,RAM和网络使用情况

我发现这篇较旧的文章如何监视计算机 -cpu -memory-and-disk-usage-in-java并且想要问一下,如果java 7中有新内容,我想得到当前的CPU- ,RAM-和netzwork-定期使用我的应用程序。 它必须适用于linux(mac)和windows。 数据不能非常详细,3个值就足够了(cpu:10%,Ram 4%,Network 40%)。 如果数据仅适用于应用程序而不是整个操作系统,那将会很酷,但这也可行。 感谢帮助