我该如何模拟套接字断开连接?

3

我的应用程序将文件上传到客户的服务器,但他想要特殊的“暂停上传”功能。我无法简单地关闭连接,甚至杀死进程 - 他需要丢失连接,否则他的服务器应用程序将删除未完成的文件 - 所以我必须在代码中模拟“断开电缆”的操作 - 你有什么建议吗? 谢谢你的帮助,对于我的英语我很抱歉 :) jirka


你需要停止发送数据和停止发送到达数据的确认(我认为这在Java的套接字实现中不可能实现,因为这是由操作系统完成的),然后等待足够长的时间,以便服务器端触发某个超时。 - Paŭlo Ebermann
3
可以使用防火墙设置(iptables或Windows防火墙),或者直接拔掉网线、关闭无线路由器,或发送RST信号。在Windows上,你可以通过TCPView轻松完成这些操作。 - bestsss
@PaŭloEbermann,那行不通,因为超时时间足够长(如2小时),或者他们启用了KEEP_ALIVE。 - bestsss
聪明的想法,但如果你想要在Windows上进行自动化测试,可能会有些棘手。@bestsss - PaoloVictor
@PaoloVictor,使用WinPCap发送RST并不困难,不知道是否有库/应用程序可以这样做。 - bestsss
2个回答

2

0
如果您编写了客户端和服务器,也许更好的选择是发送一些OOB数据告诉服务器您正在暂停(或者发送一条消息告诉服务器在下一个套接字关闭时不要删除文件)。通常最好是明确说明,而不是依赖某些操作的副作用 - 在您的情况下,关闭套接字而没有明确的连接终止

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接