背景
我的一个现有qt应用会启动一个websock服务,需要用到127.0.0.1 的某个端口,以19898端口为例。启动后,我的另一个应用会连接该websock服务后,连接该服务成功。每次都可以成功连接,但是收不到消息。
分析
- 测试服务连接
使用telnet 127.0.0.1 19898,服务可以连接。
cmd
telnet 127.0.0.1 19898
我杀掉启动websock服务的进程,再次使用telnet 127.0.0.1 19898,发现服务还是可以连接。
那么,这个端口肯定是被其他应用给占用了
解决
- 查看端口占用情况
使用netstat命令查看端口占用情况,我这里只关心我关注的端口19898
cmd
netstat -ano | findstr 19898
可以看到确实该端口被占用了
可以看到占用端口的进程id为 10568
- 根据进程id查询对应应用信息
cmd
tasklist | findstr 10568
可以看到是这个程序占用了我们的端口。(当然我知道这个程序,是我另一个应用的程序),所以我杀掉该应用程序。
现在再启动带websock服务的那个应用,接收消息都正常了
当然处理该问题最简单的方式就是换个端口。(但是就是想看看为什么可以连接成功,但是就是接收不到消息)