在做毕设时发现了这个问题:
当客户端和服务端连接的过程中时
客户端主动关闭socket时,可以发现服务端对应的socket还是保持着连接
对于这个情况,
byte[] buffer = new byte[128];
int limit = 0;
while ((limit = bis.read(buffer)) != -1) {
log.info("接收到数据");
log.info("limit ---" + limit + buffer[0]);
for (int i = 0; i < limit; i++) {
System.out.print(" "
+ MessageDealWithUtil.toHexString(buffer[i]));
}
;
this.analyseBytes(buffer, limit);
}
在这里面,在这个read()方法,由原本的暂时在这,会在一会儿,跳出循环体了。
也就意味着,服务端的socket是在过一段时间之后才发现已经关闭的;