草庐IT

Networking

全部标签

java - java.nio 对 Web 服务器有什么好处?

我知道这是一个反复出现的问题,我已经阅读了类似下面的文章http://www.mailinator.com/tymaPaulMultithreaded.pdf说nio的扩展性比io更好并不一定是真的。但我正在努力了解javanio在开发Web服务器时如何比传统的接受器/工作线程架构更好地扩展?让我解释一下:通常JavaWeb服务器使用以下模式来处理连接:一些受限于内核数量的接受器线程阻塞在ServerSocket的accept()方法上:while(true){socket=serverSocket.accept();//handleRequestsubmitsthesockettoa

java - 是否可以在java servlet中准确判断客户端的IP地址

我想在我的网络中配置一台机器来接受来自特定机器的所有调用而无需身份验证。为此,我计划使用客户端计算机的IP地址作为所需的信任因素,以允许未经检查的身份验证。我担心的是,是否可以在javaservlet中准确确定客户端的IP地址?是否有可能我在servlet中获得的IP可以通过某种黑客机制进行更改,以使我的服务器相信它是受信任的IP?例如,如果我的服务器计算机配置为信任192.168.0.1,那么192.168.0.1以外的其他客户端是否可能伪装成192.168.0.1并欺骗我的身份验证机制? 最佳答案 您可以使用HttpServle

用于客户端/服务器通信的 Java 标准

用于客户端/服务器或P2P通信的“官方”JavaAPI是什么?JavaRMI?其他一些网络API??官方网络API是SE和EE的标准吗?我确信答案是非常具体的,所以让我们看几个例子:您在2台机器上安装了2个swing客户端并连接到同一个网络(或Internet),并且您希望其中一个向另一个发送一个原语,例如整数4,或一些POJO,例如“小部件”对象与上面的#1相同,但介于Swing客户端和完全兼容的JavaEE后端(实现托管bean、应用程序服务器,整个九码)我心中没有特定的应用程序,我只是想知道在Java世界中客户端-客户端和客户端-服务器通信的“规范”是什么。

java - 在java中获取默认网关

我想使用java获取本地机器的默认网关。我知道如何通过执行dos或shell命令来获取它,但是还有其他方法可以获取吗?还需要获取主次dnsip。 最佳答案 Myway是:try(DatagramSockets=newDatagramSocket()){s.connect(InetAddress.getByAddress(newbyte[]{1,1,1,1}),0);returnNetworkInterface.getByInetAddress(s.getLocalAddress()).getHardwareAddress();}由于

java - 检测网络中重叠社区的库?

正在寻找一个可以在几秒钟而不是几分钟内检测相当大的网络(最多10,000个节点)中的重叠社区的库?[注意:“网络”是指图表]回复询问详情的评论,这里有一个简单的例子:D-E-F|G|A-B-C有许多算法能够将(D,E,F,G)和(A,B,C)检测为该网络中的2个不同(不重叠)社区-或者当然是(D,E,F)和(A,B,C,G)。我正在寻找一种用Java实现的算法,它能够将(D,E,F,G)和(A,B,C,G)检测为两个重叠(因为它们在G上重叠)该网络中的社区。 最佳答案 尝试使用斯坦福大学的SNAP工具。他们在已经实现的示例文件夹中有

java - 如何从 Java 设置默认网关、IP 地址和子网掩码?

我正在寻找从Java配置我的以太网卡的方法。有什么方法可以从Java更改默认网关、IP地址和子网掩码。目前我正在使用OSHI获取ip地址、Mac地址和其他硬件信息。我还了解到设置这些参数的唯一方法是Java.lang.Runtime类并使用硬件特定命令从here设置属性我正在寻找一种更简洁的方法来为Linux、Windows和Mac执行此操作。我基本上是在尝试从我自己的应用程序中设置所有这些属性。是否有像OSHI这样的库或包装器来执行主机特定命令? 最佳答案 你可以这样做Stringstr1="192.168.0.201";Stri

Java I/O 与 NIO : Quick Benchmark Comparison

我最近读到,由于多核计算机的新可用性,Java的I/O性能优于NIO。我使用本地主机环回地址运行了一个快速测试,比较I/O和NIO在LAN上的传输时间。注意:这是使用JDK7结果(3次试验):平均I/O传输21789.3毫秒NIO传输平均22771.0ms还值得注意的是,与I/O相比,每次NIO传输的CPU使用率似乎高出约10%。我的问题是我的比较代码是否公平?我是否编写了良好/同等的I/O和NIO代码?如果没有,我该如何改进并重新运行此测试?publicstaticvoidmain(String[]args){System.out.println("Initiatingtestseq

java - 读取/写入 Java 服务器套接字的最佳实践

如何设计在单个套接字(支持并行读写操作)上运行的读写循环?我必须使用多线程吗?我的(java)解决方案好吗?那sleep命令呢?你如何在这样的循环中使用它?我正在尝试使用2个线程:阅读publicvoidrun(){InputStreamclientInput;ByteArrayOutputStreambyteBuffer;BufferedInputStreambufferedInputStream;byte[]data;StringdataString;intlastByte;try{clientInput=clientSocket.getInputStream();byteBuff

java - 我应该在我的 Java 应用程序中为 HTTP 使用 java.net 或 org.apache.http 库吗?

关于这两个HTTP库之间的权衡,我应该知道什么? 最佳答案 我会说这取决于您的需求。我在执行简单的GET和POST时使用了java.net。突然我需要对sessioncookie等的支持,于是我切换到HTTPClient。这也是我的一般建议。不要为无需第三方库即可轻松完成的简单任务引入对第三方库的依赖。 关于java-我应该在我的Java应用程序中为HTTP使用java.net或org.apache.http库吗?,我们在StackOverflow上找到一个类似的问题:

Java 多人游戏 - 网络概念

对于一个学校项目,我们应该用Java创建一个多人游戏(它应该是客户端/服务器),可以在互联网上玩(我们在学校编程,所以这不是家庭作业)。游戏是回合制的,但应该有聊天,当然是实时的。然而,我们都没有网络编程经验,而且我了解得越多,我的问题似乎就越多。我的第一个想法是使用套接字API来实现多人游戏部分。服务器等待来自客户端的新数据。然而,有多种数据需要接收,比如聊天消息、移动等。此外,一旦连接到服务器,就应该发送一些初始数据(比如玩家的名字)。服务器应该能够看到它收到了什么样的消息,但是如何呢?我正在考虑创建一个带有字符串字段type的类Message。但是在我的服务器代码中,我会得到这样