首页
社区
课程
招聘
[旧帖] 为何本地计算机会启动两个UDP端口? 0.00雪花
发表于: 2014-9-2 10:45 6316

[旧帖] 为何本地计算机会启动两个UDP端口? 0.00雪花

2014-9-2 10:45
6316
我的程序需要启动UDP端口,在启动前,我会通过netstat -a -o来查看当前端口是否被占用,以及占用的端口的程序的pid。如果被占用,我会调用 taskkill /f /pid xxx来停止进程。

现在问题:这个端口都是我自己程序用到的,但有时候程序退出的时候释放了,但是通过netstat -a -o,查看发现端口仍然被占用。查看出来占用端口的pid通过任务栏管理器,是查看不到该进程的。
而且,调用  taskkill /f /pid xxx也提示:进程不存在,删除失败。

更诡异的问题:以前出现上述情况的时候,再启动本地UDP该端口,会提示端口被占用,结果前几天出现可以正常启动。而且可以发送UDP消息,但是接收不到UDP消息(怀疑接收的消息是被系统误发到另外一个占用的UDP端口去了)。



有哪位大神知道为什么会出现上述两种情况吗?
还有上面两个问题,大家有什么好的解决方法吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
2个端口这个,你可以关闭下自动解析地址,有可能是本机的不同IP。要知道你对外开放了某个端口后,还可以给127.0.0.1开放相同的端口
2014-9-2 11:14
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对于UDP协议通过设置插口选项....................,允许绑定相同的本地地址、本地端口
2014-9-2 11:25
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
两个端口都是我程序启动的。而且我程序绑定的UDP端口,都是直接绑定127.0.0.1
2014-9-2 11:27
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
tcp栈的事,你管不了。他会保留端口一段时间,等待是否有残余的包过来,这个时间可以tcp/ip的设置里设,具体的自己查度娘。
2014-9-2 13:14
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
应该不是保留端口一段时间的问题。我程序都结束掉了,端口还被占用(非必现)。而且如果没有重启系统的话,一直都占用着。
2014-9-2 14:01
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你再开程序,是不是就重新占用了呢?如果程序的是正常的就没问题,TCP要在重新审请前一直保留一段时间,这个时间可能是至到你重启机器。
2014-9-2 14:23
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哇  这样子  那程序岂不是只能在第一次运行时候发挥作用?
2014-9-2 14:58
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感觉你设置端口的时候,别设置那么小的值,5000以上设置看看,小的值,有可能被系统,或者其他软件占用。任务管理器里面有的进程是不显示的。
2014-9-2 15:18
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个,我端口设置的20002。现在问题是,我程序退出后,有释放端口,但偶尔仍然会出现被占用的情况。
后面那个是pid!
2014-9-2 15:36
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你看看清空缓冲区试试。UDP要求必须所有包都要到位后才可以关闭,如果还有没到位的情况,就一直占用等待完成,另外如果你要求实时严格的传输,应该用tcp.
2014-9-2 15:49
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
你在退出的代码中,退出执行后,重新查询一下,输出看看,是否在程序还是显示有端口占用。
2014-9-2 16:15
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
顶一下,继续坐等大神讲解分析问题产生的原因。
2014-9-5 09:23
0
雪    币: 2096
活跃值: (291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
新人,先来看看,学习学习!
2014-9-5 09:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
socket句柄是在进程关闭时就会被释放的,这也是为什么本机通信用localhost相比使用共享内存的优势之一

有个工具叫CurrPorts可以用来主动关闭相应的地址:端口
你有没有开启类似vpn这样的程序?
2014-9-7 11:04
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
没有,就是两个进程间,通过本机UDP进行通讯。然后有个程序因为更新任务需要关闭进程,关闭后有释放了端口。然后在启动的时候检测端口是否被占用的时候,就提示被占用,用task kill杀占用的进程提示找不到该进程。然后再次绑定这个被占用的端口也会成功。
2014-9-9 10:26
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
帮顶,学习一下
2014-11-14 16:47
0
游客
登录 | 注册 方可回帖
返回
//