java - 将传入的 TCP "Commands"转发给函数?

标签 java sockets

在 Java 中,您将如何设置一个套接字监听器来监听套接字中代表命令的一系列字节,并在收到时调用一个方法来解析传入数据并调用适当的命令?

澄清:

我的问题不是处理命令(也可能是错误代码或对来自服务器的命令的响应),而是创建套接字并监听它。

更多说明:

我想做的是模仿以下 .Net (C#) 代码行:

_stream.BeginRead(_data,0, _data.Length, new  
    AsyncCallback(this.StreamEventHandler), _stream);

地点:

  • _stream 是从套接字创建的网络流
  • _data是一个长度为9的Byte数组
  • this.StreamHandler 是一个委托(delegate)(函数指针),在读取数据时执行。

我正在将一个库从 C# 重写为 Java,我目前正在编写的组件通过 TCPIP 将命令传递给服务器,但还必须能够将事件/响应冒泡到它上面的层。

在 C# 中这似乎是微不足道的,而在 Java 中它看起来越来越不重要了。

最佳答案

Starting from my other answer :您请求的特定部分是进入以下部分的部分:“魔术在这里”。可以通过多种方式完成,但其中一种是:

final InputStream in = socket.getInputStream();
// This creates a new thread to service the request.
new Thread(new Runnable(){
  public void run(){
    byte[] retrievedData= new byte[ITEM_LENGTH];
    in.read(retrievedData, 0, ITEM_LENGTH);
    in.close();

    // Here call your delegate or something to process the data
    callSomethingWithTheData(retrievedData);
  }
}).start();

关于java - 将传入的 TCP "Commands"转发给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479595/

相关文章:

客户端有关recvfrom函数的问题

java - 如何在选项卡菜单中使用抽屉导航

java - org/eclipse/jdt/internal/compiler 包的用途是什么?

c# - 如何正确地对异步套接字连接操作进行单元测试并避免 Thread.Sleep?

php - 在 HandlerSocket 上基于原始套接字的查询中表示 NULL 键值的正确方法

java - 如何将数据从 Java 客户端发送到 C++ 服务器?

Android 应用程序上的 Java 套接字异常,需要帮助吗?

java - Android 权限没有执行任何操作

java - 了解延迟加载集合的大小

javaFX-如何在屏幕底部放置文本区域