我有一个独立的应用程序正在收听42555端口 .

并且GWT应用程序已部署到Tomcat服务器(版本6)中 . GWT应用程序通过SSL套接字与独立服务器通信 . 对于每个用户会话,在应用程序之间 Build 了三个套接字 . 当用户注销时,我们断开连接并关闭套接字 . 但是当我在Linux机器上执行netstat(独立和tomcat)时,我能够看到3个连接(每个用户)挂在CLOSE_WAIT状态 .

When user Active. The netstat give the following

tcp        0      0 127.0.0.1:60143             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:60144             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:60145             127.0.0.1:42555             ESTABLISHED 12746/tomcat
tcp        0      0 127.0.0.1:42555             127.0.0.1:60143             ESTABLISHED 30525/./standalone_server
tcp        0      0 127.0.0.1:42555             127.0.0.1:60144             ESTABLISHED 30525/./standalone_server
tcp        0      0 127.0.0.1:42555             127.0.0.1:60145             ESTABLISHED 30525/./standalone_server

After the user log out and socket disconnect/close. netstat gives

tcp       70      0 127.0.0.1:60143             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)
tcp       70      0 127.0.0.1:60145             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)
tcp       70      0 127.0.0.1:60144             127.0.0.1:42555             CLOSE_WAIT  12746/tomcat          off (0.00/0/0)

当用户在客户端单击logout时,我正在关闭inputStream,outputStream然后关闭socket . 在独立服务器端,套接字保存在Map中(套接字以会话为基础进行映射),并在2小时后关闭(基于套接字的最后一个请求) .

看到这一切后,我无法确定问题 . 基于netstat,它显示tomcat应用程序 Build 的套接字没有完全关闭 . 但是当我使用开发模式(gwt应用程序)在本地Windows机器上运行服务器时,套接字正在完美关闭 . 这证明应用程序级别没有问题 . 但当我用Google搜索CLOSE_WAIT状态时,在tomcat方面也没有任何意义 .

有人能指出我发生错误的地方吗?

PS:我是网络和tcp / ssl堆栈中的新手,仅在2小时后才注销了netstat .