我有一个客户端和一个服务器应用程序,客户端发送一个数据字节,表示用户已关闭客户端窗口并终止客户端程序。问题是服务器可能会在丢弃他之前向该客户端发送最后一个通知。如果服务器在阻塞模式下使用SocketChannel的write方法,它是无限期阻塞还是被忽略?在断开连接之前,我是否应该让客户端等待“断开连接确认”?
答案 0 :(得分:1)
答案 1 :(得分:1)
它不会永远阻挡,也不会被忽视。如果数据的套接字发送缓冲区中有空间,它很可能根本不会阻塞。如果它阻止了它可能会导致IOException:'peer reset by peer',或者它可能只是解锁并正常返回。没有预测到这一点。情况不正确,不应该被允许发生。您可以通过关闭两个插座进行输出然后读取直到获得EOS来达到约定的相互关闭点;然后双方都处于同一点,可能会关闭。