Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Guava用于sockets客户端库_Java_Sockets_Guava - Fatal编程技术网

Java 将Guava用于sockets客户端库

Java 将Guava用于sockets客户端库,java,sockets,guava,Java,Sockets,Guava,我正在写一个小的客户端库来帮助我完成一个Android项目。所以我现在在学番石榴,我有点困了 TCP服务器具有2种功能: 回答直接查询 订阅将来将被多次答复的查询 因此,我使用AbstractExecutionThreadService来侦听传入的消息。对于直接查询,我想使用ListenableFuture,对于订阅消息,则使用EventBus 问题是,要创建ListenableFutures,我必须使用ListeningExecutorService,而这正是我现在想要的。如果您看到我的代

我正在写一个小的客户端库来帮助我完成一个Android项目。所以我现在在学番石榴,我有点困了

TCP服务器具有2种功能:

  • 回答直接查询
  • 订阅将来将被多次答复的查询
因此,我使用
AbstractExecutionThreadService
来侦听传入的消息。对于直接查询,我想使用
ListenableFuture
,对于订阅消息,则使用
EventBus

问题是,要创建
ListenableFuture
s,我必须使用
ListeningExecutorService
,而这正是我现在想要的。如果您看到我的代码,则
运行
循环将处理消息,并应以某种方式解析正确的
ListenableFuture

那么,我如何使
test()
方法返回一个
ListenableFuture
,当数据到达时,它将由
run()
循环解决

公共类StratumClient扩展AbstractExecutionThreadService{
私有静态最终记录器log=LoggerFactory.getLogger(StratumClient.class);
私有最终字符串主机;
私人最终国际港口;
专用插座;
专用数据输出流到服务器;
来自服务器的私有BufferedReader;
public StratumClient(字符串主机,int端口)引发IOException{
this.host=host;
this.port=端口;
this.socket=createSocket();
}
受保护的套接字createSocket()引发IOException{
log.debug(“打开“+host+”:“+port”的套接字);
返回新的套接字(主机、端口);
}
@凌驾
受保护的void startUp()引发异常{
调试(“创建到套接字的I/O流:“+socket”);
toServer=新的DataOutputStream(socket.getOutputStream());
fromServer=new BufferedReader(新的InputStreamReader(socket.getInputStream());
}
@凌驾
受保护的无效触发器关闭(){
试一试{
socket.close();
}捕获(IOE异常){
日志错误(“无法关闭套接字”,e);
}
}
@凌驾
受保护的void run()引发异常{
字符串回复;
调试(“开始监听服务器回复”);
而((reply=fromServer.readLine())!=null){
log.debug(“从服务器获得回复:“+reply”);
//TODO处理和分派消息
}
debug(“已完成侦听服务器回复”);
}
公共ListenableFuture测试(字符串str)引发IOException{
toServer.writeBytes(str);
return null;//在此处返回ListenableFuture
}
}

谢谢

ListeningExecutorService
不是获取/创建
ListenableFuture
的唯一方法。你看过吗?这可能会有帮助