gpt4 book ai didi

java - Netty(Dummy)用于现有服务

转载 作者:行者123 更新时间:2023-12-01 15:23:30 25 4
gpt4 key购买 nike

我想为一个现有服务编写一个虚拟服务(使用 Netty)。它将用于测试目的。

该服务的现有客户端代码片段如下所示:

Socket socket = new java.net.Socket();
socket.connect(new InetSocketAddress("localhost", 8080), 10000);
socket.setSoTimeout(20000); // set a timeout of 20 seconds
InputStreamReader ir = new InputStreamReader(socket.getInputStream());
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// write some string to the server and wait for answer
out.println("SomeCommand");
// server has written some answer, read it
char[] c = new char[2];
ir.read(c, 0, 2);
String cs = new String(c);
if ("OK".equals(cs.toString())) {
// write some more string's to the server
}
// we're done, close the connection
out.println("BYE");
out.close();
socket.close();

Netty为 java.net.Socket 连接创建服务器的正确框架? (如果没有,应该使用哪个框架(如果有)?)

我正在尝试使用 QuoteOfTheMoment 示例找到一种开始使用 Netty 的方法。 QuoteOfTheMomentServerHandler 基本上做了我想要的事情,在收到消息时,返回一些答案,以便上面的代码片段可以使用输入流读取答案,但上面的套接字无法连接到 QuoteOfTheMomentServer。错误是“连接被拒绝”。

[编辑]更多说明:
问题(我认为)不是连接或我使用的端口。让我尝试更好地提出这个问题:

我刚刚开始使用 netty(没有 nio 经验),不熟悉不同类型的 channel 、管道等。
服务器应该像 servlet 请求/响应(例如,不是 http 或尝试重建 http servlet impl)一样,对写入输出流的 inputString 使用react(如代码片段中所示)并写回一些字符串/字节到输入流,如代码片段中所示,因此客户端只能继续前进。因此,连接应该保持打开状态,但也应该是同步的,客户端等待服务器的答复。如果我使用示例 "Writing the Server Side of a Socket" in the java tutorial我能够让它为客户工作。但我想利用 netty 的线程处理等。
QuoteOfTheMomentServerHandler 似乎是我想要的服务器端实现,但是该设置可以处理给定的客户端代码吗?

所以问题是,考虑到客户端的工作方式,应该使用哪种管道、 channel 或类似的东西?

同样,客户端和服务器已经存在。我想构建一个虚拟服务器实现来与现有客户端一起使用。

最佳答案

Netty 是一个 TCP/IP 框架。所以,如果您正在开发 TCP/IP 服务器,那么这个工具包非常适合使用。

我假设您在尝试将客户端连接到服务器时遇到错误。此外,服务器也应该正在运行。

当收到连接被拒绝错误时,有几个需要检查的地方。第一个是服务器上的防火墙(如果有)允许连接到端口 8080?其次,从您的客户端计算机尝试打开到服务器的 telnet session ,如下所示:

Telnet yourserverip 8080

这将打开与服务器的套接字连接。如果您收到错误消息,请 Google 搜索。

最后一个是您可能正在运行像 tomcat、glassfish、IIS 这样的服务器,这些服务器已经使用端口 8080。尝试使用非标准端口,例如 10810。

更新:

如果您是 Netty 新手,请阅读此处的用户指南 http://netty.io/docs/stable/guide/html/

我查看了即时报价服务,我相信我发现了部分问题。 Quote of the moment 服务是广播 UDP/IP 客户端和服务器。 UDP 是 TCP IP 的轻量级“版本”。它不保证传送到客户端或服务器,并且它是广播的。 UDP 有点像 radio 广播,因为它通常不针对特定 IP,而是在整个网络上广播。因此,您正常的 TCP IP 连接将无法在 UDP 服务器上工作。

请参阅此链接,了解如何编写 UDP 客户端 http://systembash.com/content/a-simple-java-udp-server-and-udp-client/ .

我建议您将 Quote of the moment 服务器从 UDP 转换为 TCP/IP 服务器,因为这将为您提供创建 TCP/IP 服务器的一些练习,而无需了解太多细节。一旦您对此感到满意,您应该能够从头开始。

请记住,Netty 会为您处理 NIO 部分。它是一个基于 NIO 的更高级别的框架,因此向您隐藏了很多细节。使用 Netty 不需要非常了解 NIO,但需要很好地理解 Netty 概念。

关于java - Netty(Dummy)用于现有服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10517811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com