2011-09-13 55 views
3

我的应用程序将文件上传到我的客户端的服务器,但他想要特殊的“暂停上传”功能。我不能简单地关闭连接,甚至没有杀死进程 - 他需要失去连接,否则他的服务器应用程序删除未完成的文件 - 所以我必须在代码中模拟“拔下电缆” - 你有什么建议吗? 感谢您的帮助,我的英语水平:) 尔卡对不起如何模拟套接字断开?

+0

你必须停止发送数据并停止发送到达数据的确认(我认为这对于Java的套接字实现是不可能的,因为这是由OS完成的),然后等待足够长的时间,以便服务器端的一些超时触发。 –

+3

使用防火墙设置(iptables或windows防火墙),或者拔掉电缆,关闭无线路由器或发送RST信号。你可以很容易地在Windows上使用TCPView。 – bestsss

+0

@PaŭloEbermann,由于超时时间足够长(如2小时)和/或启用KEEP_ALIVE,所以无法工作。 – bestsss

回答

0

如果你写的客户端和服务器,或许更好的选择是发送一些OOB data告诉服务器你正在暂停(或者一条消息告诉服务器不要在下一个套接字关闭时删除该文件)。通常情况下最好是明确的,而不是依靠某些行为的副作用 - 在你的情况下,关闭套接字而没有明确的connection termination