C#编写的winform程序(有关socket通信)release后运行时和在工程中运行时产生RST帧的问题

LiQian999 2015-09-14 02:01:32
c#编写的winform程序,调用经过处理的vc++编写的socket通信的动态链接库,整个窗体程序相当于是socket通信中的服务器端,当在窗体中点击停止服务按钮时,停止服务按钮的click事件会调用动态库的接口函数把所有的客户端的socket全部清除掉了。在工程中运行时点击停止服务按钮,抓包工具不会抓到RST,但是在发布后运行时,点击停止服务按钮,抓包工具会抓到
RST。这是为什么?
我在上述提到的工程里添加了一些新的代码,分析了一下添加的代码不会影响到停止服务按钮的事件处理代码,并且停止服务按钮的事件处理代码基本没变,但是发布后运行时点击停止服务按钮时不会产生RST,这是什么原因?怎么才能在点击停止服务按钮后产生RST?会不会是编译选项的问题?但是找了好久也没有解决问题,求大神解答,在线等,还有上面的socket通信时TCP协议。

...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiQian999 2015-09-16
  • 打赏
  • 举报
回复
哎,苦思,此问题还是没有解,求助
LiQian999 2015-09-14
  • 打赏
  • 举报
回复
引用 3 楼 xian_wwq 的回复:
1。debugh和release存在差异 2。不要太拘泥于tcp的细节,不管什么原因的失败,处理方案都是一样 都需要重新连接,重新发送数据
目前是我点击停止服务按钮,停止服务click事件程序会调用动态库将客户端的socket信息全部清除掉,按理应该产生异常,但是我在老版本上升级后的窗体程序中点击停止服务按钮,什么反应也没有 最后还是感谢你的解答
LiQian999 2015-09-14
  • 打赏
  • 举报
回复
引用 2 楼 wyqlxy 的回复:
TCP处理程序会在自己认为的异常时刻发送RST包。也许你程序点击停止的时间点不一致造成看到的结果不一致
感谢你的解答,但是我测了好多次,发现老版本的窗体程序中,只要一点击停止服务按钮就会产生RST包,但是我在老版本的基础上修改后的版本,点击停止服务不会买产生RST包,现在的需求是想让他产生RST包,不直接一一去给客户端发FIN。这个问题太让人闹心了
xian_wwq 2015-09-14
  • 打赏
  • 举报
回复
1。debugh和release存在差异 2。不要太拘泥于tcp的细节,不管什么原因的失败,处理方案都是一样 都需要重新连接,重新发送数据
  • 打赏
  • 举报
回复
TCP处理程序会在自己认为的异常时刻发送RST包。也许你程序点击停止的时间点不一致造成看到的结果不一致
LiQian999 2015-09-14
  • 打赏
  • 举报
回复
忘了说上面的socket是TCP协议

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧