有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将传入的TCP“命令”转发给函数?

在Java中,如何设置一个socket侦听器,该侦听器监听一系列表示命令的字节的socket,并在接收时调用一个解析传入数据并调用相应命令的方法

澄清:

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

更多澄清:

我想做的是模仿下面这一行。Net(C#)代码:

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

其中:

  • _流是从socket创建的网络流
  • _数据是长度为9的字节数组
  • 这个。StreamHandler是在读取数据时执行的委托(函数指针)

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

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


共 (2) 个答案

  1. # 2 楼答案

    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();