当前位置: 首页 > 知识库问答 >
问题:

现有服务的Netty(Dummy)

伯博
2023-03-14

有一个现有的服务,我想写一个虚拟服务(使用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经验),不熟悉不同类型的通道、管道等等。< br >服务器应该像servlet请求/响应(像,而不是http或试图重建http servlet impl)一样,对代码片段中写入输出流的inputString作出反应,并像代码片段中一样将一些字符串/字节写回输入流,这样客户端才继续前进。因此,连接应该保持开放,但也是同步的,客户端等待来自服务器的回答。如果我使用java教程中的例子“编写套接字的服务器端”,我就能让它为客户机工作。但是我想利用线程处理等。妮蒂送的。< br > quoteofthemementserver handler似乎是我想要的服务器端实现,但是该设置能处理给定的客户端代码吗?

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

同样,客户机和服务器都存在。我想构建一个虚拟服务器实现来与现有客户机协同工作。

共有1个答案

常雪风
2023-03-14

网络是一个 TCP/IP 框架。所以是的,如果你正在开发一个TCP / IP服务器,这个工具包很好用。

我假设您在尝试将客户端连接到服务器时出错。服务器也应该在运行。

当得到一个连接拒绝错误时,有几个你要检查。第一个是服务器上的防火墙(如果有),允许连接到端口8080?其次,从客户机尝试打开与服务器的telnet会话,如下所示:

Telnet yourserverip 8080

这将打开到服务器的套接字连接。如果你收到一条错误消息,谷歌它。

最后一个是,您可能正在运行像雄猫,玻璃鱼,IIS这样的服务器,它已经使用端口8080。例如,尝试使用非标准端口,例如10810。

更新:

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

我看了一下报价服务,我相信我发现了部分问题。报价服务是广播UDP/IP客户端和服务器。UDP是TCP IP的一个更轻量级的“版本”。它不保证传递到客户端或服务器,而是广播的。UDP有点像无线电广播,因为它通常不针对特定的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的概念。

 类似资料:
  • 我有一个基于UDP网络的服务器。它有一个流水线,我在其中重写方法。 我需要时不时地写些信息。我只能通过使用中的套接字信息和中的通道来实现。为了能够重用这些信息,我保留在一个静态映射中。 我做错什么了吗? 有没有比将通道和远程地址保留在某个成员中更好的回写方法?

  • 我已经阅读了netty代理服务器示例。但是,我想知道如何实现一个与代理对话的客户端。我正在实现的解决方案是服务器,每当客户端连接到服务器时,它都需要连接到套接字服务器。因此,连接到服务器的每个客户端都能够从另一台服务器发送/接收数据。 我需要帮助用netty实现这样的体系结构,因为服务器端是在netty上构建的。

  • 我正在尝试在Netty中实现一个基本的多客户端聊天,我有一点被卡住了!代码是: } } 我想先读一下留言

  • 我试图建立一个通用服务器总是在连接的客户端。 该体系结构由4个主要组件组成 有状态应用服务器 无状态网关服务器 客户排队 系统和经纪人 工艺流程 客户端连接到网关 我正在使用JavaNetty作为网关。appserver也是用Java编写的。 我很想说这个设计像Mongrel2,但我不能完全确定。我想说,这更符合城市飞艇氦边缘服务器的设计(http://urbanairship.com/blog/

  • 我正在尝试使用NettyV4编写代理服务器。0.30. 我已经浏览了发布中包含的代理示例(http://netty.io/4.0/xref/io/netty/example/proxy/package-summary.html).不过我的要求有点不同。 在我的例子中,我的netty实例后面可能有多个服务器,所以我不能直接在ChannelActive方法中创建客户端引导。我的客户端基本上发送两个请求

  • 我试图使用Netty来设置一个简单的UDP服务器,遵循这里的示例,但使用Spring来连接依赖项。 我的Spring配置类: 为了避免阻塞主线程(用于Spring配置),我创建了一个新线程,如下所示: 我可以看到新线程被阻塞,等待通道关闭(如示例所示)。主线程可以继续Spring配置。然而,这仍然不起作用。