我的服务器中有一种服务架构,侦听 TCP-IP-socked。
messageType = protocolHandler.getMessageType();
ITaskProtocol serviceProtocol = serverServices.get(messageType);
if (p != null) {
String result = serviceProtocol.handleTask(protocolHandler);
}
我将特定任务的协议存储在哈希图中。我的问题是,应该处理该任务的协议在 inputStream 中找不到任何字节。inputStream 和 socked 在“protocolHandler”内。
例子:
public class ProtocolHandler implements ITaskProtocolHandler {
@Override
public int getMessageType() throws IOException {
return new DataInputStream(stream).readInt();
}
但是,我可以看到(由于调试)消息已发送。并且还在地图中找到了协议(服务),并调用了服务的“handleTask(...)”方法。但是,该服务没有收到任何消息,因为字节丢失并且协议正在相互等待。
我的猜测是搜索服务需要太长时间,同时消息丢失。
重要信息:有时它工作有时不工作。客户端和服务器在同一台电脑上运行,这可能是线程问题。
客户端协议:
clientWorker.send(ServerProtocol.MessageRequestType.JoinTopicRequest.getRequestNumber());
clientWorker.send("some xml-message");
服务器服务协议:
public String handleTask(ITaskProtocolHandler protocolHandler) throws Exception {
Message m = protocolHandler.getMessage());
架构有什么问题?
多谢!