这基本上是图片:我有一个服务器和一个客户端(通过localhost操作).服务器为每个连接创建一个客户端线程.这个新线程在读取等待来自客户端的消息时阻塞.随意,我可以通过GUI停用服务器,GUI将(从主线程)"断开"发送到客户端,然后关闭输出流,唤醒被阻止的客户端线程,然后通过关闭套接字完成(我认为在关闭输出流之后这种关闭是不必要的,但无论如何).
客户端:连接请求后,它会休眠10秒,写入断开连接消息并通过char读取答案字符.
问题:
在该10秒客户端休眠时间内停用服务器后,客户端从服务器正确读取"断开连接"消息.但是,如果我只为每个char读取添加一个虚拟打印(在while循环内),则最终读取的结果会发生变化.有时它会正确读取服务器的"断开连接",有时会读取"disco"或类似的变体,并抛出此异常:
"Java异常:"软件导致连接中止:recv失败"
有关添加少量打印件的原因有何建议可以创建此结果?我会假设另一端有一个封闭的套接字对读取消息没有影响.我发现有关recv错误的其他线程提到超时,我猜测在使用localhost时应该不会发生这种情况?
所以我stamp timestamp DEFAULT NOW() ON UPDATE NOW()在我的桌子上有这一行,即使我正在执行的更新基本上是所有字段上的相同数据,我也需要它进行更新.
有没有办法在表的声明中执行此操作,比如除了之外的其他选项on update,或者我stamp = now()每次更新时都必须强制执行此操作(并删除on update当然因为它将无用).
我已经看过这个帖子了,但它只回答了正在发生的事情以及为什么,而不是如何绕过它而不是间接强迫它