在 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/