草庐IT

java - while(true) ServerSocket Listen 的效率

我想知道典型的while(true)ServerSocket监听循环是否需要整个核心来等待并接受客户端连接(即使在实现可运行并使用Thread.start())我正在实现一种分布式计算集群,每台计算机都需要它拥有的每个核心来进行计算。主节点需要与这些计算机通信(调用修改算法功能的静态方法)。我需要使用套接字的原因是跨平台/跨语言的能力。在某些情况下,PHP将调用这些java静态方法。我使用了一个java分析器(YourKit),我可以看到我正在运行的ServerSocket监听线程,它从不hibernate并且一直在运行。有没有更好的方法来做我想做的事?或者,性能影响可以忽略不计吗?如

Java socketRead0 问题

我正在使用htmlunit开发一个webcralwer并且我已经添加了所有必需的超时但是我注意到当我使用JavaVisualVM进行线程转储时某些网站的服务器没有响应时应用程序挂起:java.lang.Thread.State:RUNNABLEatjava.net.SocketInputStream.socketRead0(NativeMethod)atjava.net.SocketInputStream.read(SocketInputStream.java:129)atjava.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.j

Java 套接字 : Program stops at socket. getInputStream() 没有错误?

InetAddresshost=InetAddress.getLocalHost();Socketlink=newSocket(host,Integer.parseInt(args[0]));System.out.println("beforeinputstream");ObjectInputStreamin=newObjectInputStream(link.getInputStream());System.out.println("beforeoutputstream");ObjectInputStreamout=newObjectOutputStream(link.getOutp

java - Netty Nio java 中的通信

我想在Nettynio中创建一个有两个客户端和一个服务器的通信系统。更具体地说,首先,我希望当两个客户端与服务器连接时从服务器发送消息,然后能够在两个客户端之间交换数据。我正在使用codeprovidedfromthisexample.我对代码的修改可以在这里找到:link似乎serverHandler中的channelRead在第一个客户端连接时工作,因此它总是返回1但是当第二个客户端连接时不会更改为2。当两个客户端都连接到时,我如何从服务器正确检查服务器?如何从客户端的主要功能中动态读取此值?那么让双方客户沟通的最佳方式是什么?EDIT1:显然,客户端服务似乎正在运行并直接关闭,所

java - 使用带有套接字的 Javas 对象流的性能问题

我正在尝试使用Java中的套接字和对象流进行本地IPC,但我发现性能很差。我正在测试通过ObjectOutputStream发送对象到通过Socket通过ObjectInputStream接收回复的ping时间。这是请求者:publicSocketTest(){intiterations=100;try{Socketsocket=newSocket("localhost",1212);ObjectInputStreamobjectInputStream=newObjectInputStream(socket.getInputStream());ObjectOutputStreamobj

java - Netty Nio 中 promise 的异步更新

我有一个交换信息的服务器和客户端架构。我想从服务器返回已连接channel的数量。我想使用promise将服务器的消息返回给客户端。我的代码是:publicstaticvoidcallBack()throwsException{Stringhost="localhost";intport=8080;try{Bootstrapb=newBootstrap();b.group(workerGroup);b.channel(NioSocketChannel.class);b.option(ChannelOption.SO_KEEPALIVE,true);b.handler(newChanne

java - Windows 和 Linux 之间 Java 套接字的差异 - 如何处理它们?

我在理解Java如何处理Windows和Linux上的套接字方面的差异时遇到了很多麻烦-特别是当其中一方(客户端或服务器)突然关闭连接时。我编写了以下非常简单的服务器和客户端类,以使我的观点尽可能简单、客观且易于您理解:SimpleClient.java:importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.Socket;publicclassSimpleClient

java - 什么可能导致套接字 ConnectException : Connection timed out?

我们有一个Webstart客户端,它使用java.net.HttpsURLConnection通过HTTPS发送序列化对象来与服务器通信。在我的本地机器和我们办公室的测试服务器上,一切都运行良好,但我遇到了一个非常非常奇怪的问题,它只发生在我们的生产和暂存服务器上(而且偶尔会出现)。我知道这些服务器与我们办公室的服务器之间的主要区别是它们位于其他地方,与它们的客户端-服务器通信速度相当慢,但在此之前的很长一段时间内,它在生产中也运行良好。无论如何,这是正在发生的事情:客户端在HttpURLConnection上设置读取超时等选项和Content-Type等属性后,调用getOutput

Java 网络 "Connection Refused: Connect"

我一直在尝试让一个简单的网络测试程序运行但没有结果。服务器:importjava.io.*;importjava.net.*;publicclassServerTest{publicstaticvoidmain(String[]args){finalintPORT_NUMBER=44827;while(true){try{//ListenonportServerSocketserverSock=newServerSocket(PORT_NUMBER);System.out.println("Listening...");//GetconnectionSocketclientSock=s

java - 何时选择 JMS API 而不是 UDP 套接字 API,反之亦然?

可以激励程序员在分布式Java应用程序中使用JavaJMS(Java消息服务)API而不是java.net包的UDP套接字API或使用UDP套接字API而不是JMSAPI的原因是什么?如果可能,请给出示例应用程序。 最佳答案 UDP和JMS在很多方面都不同,而且从根本上说,因为JMS通常依赖于TCP固有的特性(查看comparisonofUDPandTCP以了解这两个底层协议(protocol)的差异)。基本上UDP适用于不需要任何可靠性、顺序、拥塞控制或网络间路由的应用程序(因为许多消费级和商业级路由器不转发UDP数据包)。JMS