如果数据以“选项”开头,则数据不会进入服务器套接字

mrwjdhj3  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(159)

已经编写了一个测试服务器应用程序,它在特定端口上等待客户端(例如50000)。连接成功后,将启动处理特定连接的clienttask。在客户端数据包的开头有一个单词“options”之前,一切都按预期工作。例如,如果客户端发送以下数据:“options asdfasdf”,则数据包不会到达服务器应用程序,而且连接会被服务器中断。挖掘完这个问题后,我了解到问题是服务器端决定这是一个http数据包(http协议保留了命令“选项”),不明白为什么。
我有一个问题:哪个服务/驱动程序正在侦听我的专用端口,并确定这是一个某个http请求,并且由于http请求不是根据其标准执行的,而是根据我的专用标准执行的,因此它会停止连接?我只想读取我私有端口上的所有数据包,即使开头有“options”或“get”这样的词。我的测试服务器应用程序与http服务器或类似的东西无关。只有简单的客户机-服务器体系结构。
如果有意义的话,这个应用程序运行在一个带有静态公共ip的手机上。客户端-windows应用程序。wireshark显示,如果遇到保留的http命令之一,则重置数据包来自电话的ip。
服务器应用程序:

final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(50);
Runnable serverTask  = new Runnable() {
    @Override
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(50000);
            System.out.println("Waiting for clients to connect...");
            while (true) {
                Socket clientSocket = serverSocket.accept();
                clientProcessingPool.submit(new ClientTask(clientSocket));
            }
        } catch (IOException e) {
            System.err.println("Unable to process client request");
            e.printStackTrace();
        }
    }
};
Thread serverThread = new Thread(serverTask);
serverThread.start();

为了便于阅读,删除了所有不必要的数据

private class ClientTask implements Runnable {
private final Socket clientSocket;

private ClientTask(Socket clientSocket) {
    this.clientSocket = clientSocket;
}

@Override
public void run() {
    byte readBuffer[] = new byte[10001];
    InputStream nis = null;
    System.out.println("Got a client ! "+ this.clientSocket.getLocalSocketAddress()+"      "+ this.clientSocket.getRemoteSocketAddress());
          clientSocket.setReceiveBufferSize(10000);
        nis = clientSocket.getInputStream();

while(true) {
    int bytesReaded = nis.available();
    if (bytesReaded > 0) {
        bytesReaded = nis.read(readBuffer, 0, 10000);
        System.out.println("data arrived " +bytesReaded+ " bytes");
    }
  }
 }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题