社区
C++ 语言
帖子详情
oracle进程老是与我抢端口,怎么解决?
luck_wei
2010-09-13 03:58:37
我的程序是linux环境下开发的,初始化时启动socket监听23456端口;
初始化完成后使用lsof查看23456端口发现oracle的进程也在监听这个端口;
谁知道什么原因?
...全文
173
20
打赏
收藏
oracle进程老是与我抢端口,怎么解决?
我的程序是linux环境下开发的,初始化时启动socket监听23456端口; 初始化完成后使用lsof查看23456端口发现oracle的进程也在监听这个端口; 谁知道什么原因?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luck_wei
2010-09-16
打赏
举报
回复
[Quote=引用 18 楼 justkk 的回复:]
你的程序中有没有创建子进程?
[/Quote]
有
justkk
2010-09-16
打赏
举报
回复
或许是看起来子进程监听了那个端口..
子进程有没有调用exec()?
luck_wei
2010-09-15
打赏
举报
回复
[Quote=引用 12 楼 wjjll123 的回复:]
晕,我以前搞java的时候。也正常这样。oracle总是和我抢端口。我也懒得改oracle用的端口。每次都是在oracle用那个端口之前,我就先占了那个端口。。。。
然后我程序关了就把oracle也关了。。。。。这样就行了。。。。不过治标不治本啊。。。
[/Quote]
这也是个办法,不过挺麻烦的。
luck_wei
2010-09-15
打赏
举报
回复
[Quote=引用 13 楼 wangjianbo1123 的回复:]
我理解的是不可能两个程序监听同一个端口,如果可以,那么,当有数据来的时候,这两个程序都会收到相应的数据,这个不是乱套了吗?再说了,像oracle这样的进程,不可能监听这个端口的,常用的进程一般都是监听1024以下的端口。 出现你这种情况我觉得有可能是你在退出你的程序后,没有关闭监听的套接字(closesocket())试试看
[/Quote]
确实很难理解这个现象。感觉就像oracle的进程排在你进程的后面,如果你的进程退出后它就马上占了这个端口。但是有意思的是我如果不监听任何端口,它也不做任何操作。
如果直接杀掉进程就无法关闭监听的套接字。
zhanshen2891
2010-09-15
打赏
举报
回复
你也设置端口重用就可以了
wangjianbo1123
2010-09-15
打赏
举报
回复
我理解的是不可能两个程序监听同一个端口,如果可以,那么,当有数据来的时候,这两个程序都会收到相应的数据,这个不是乱套了吗?再说了,像oracle这样的进程,不可能监听这个端口的,常用的进程一般都是监听1024以下的端口。 出现你这种情况我觉得有可能是你在退出你的程序后,没有关闭监听的套接字(closesocket())试试看
wjjll123
2010-09-15
打赏
举报
回复
晕,我以前搞java的时候。也正常这样。oracle总是和我抢端口。我也懒得改oracle用的端口。每次都是在oracle用那个端口之前,我就先占了那个端口。。。。
然后我程序关了就把oracle也关了。。。。。这样就行了。。。。不过治标不治本啊。。。
luck_wei
2010-09-15
打赏
举报
回复
netstat -an|grep 23456查看确实只有一个
但是问题是,如果我的程序退出了端口就被占用了。这个怎么解释?
justkk
2010-09-15
打赏
举报
回复
你的程序中有没有创建子进程?
genlic
2010-09-15
打赏
举报
回复
肯定是你的问题。。。
justkk
2010-09-13
打赏
举报
回复
[Quote=引用 9 楼 luck_wei 的回复:]
引用 7 楼 justkk 的回复:
你是说你的程序杀掉之前,和oracle同时监听23456端口??
是的,只不过我的程序排在前面。
[/Quote]
哦?同一个端口能同时被两个程序监听?
你用netstat -an|grep 23456看看呢..
luck_wei
2010-09-13
打赏
举报
回复
[Quote=引用 7 楼 justkk 的回复:]
你是说你的程序杀掉之前,和oracle同时监听23456端口??
[/Quote]
是的,只不过我的程序排在前面。
mengde007
2010-09-13
打赏
举报
回复
设置参数让端口重用。
justkk
2010-09-13
打赏
举报
回复
你是说你的程序杀掉之前,和oracle同时监听23456端口??
luck_wei
2010-09-13
打赏
举报
回复
[Quote=引用 4 楼 justkk 的回复:]
你的程序退出后,那端口也不是LISTEN状态吧
不影响你的程序使用
[/Quote]
是LISTEN状态
luck_wei
2010-09-13
打赏
举报
回复
整个过程是这样的:
1、程序启动之前23456端口在系统中未被占用
2、程序启动后23456端口(监听成功,可以与其他进程进行通信),此时oracle的进程也监听此端口
3、杀掉程序释放23456端口,但是oracle的进程并不释放
4、再次启动程序时监听23456端口失败
justkk
2010-09-13
打赏
举报
回复
你的程序退出后,那端口也不是LISTEN状态吧
不影响你的程序使用
冻结
2010-09-13
打赏
举报
回复
你去找一个别人不用的端口用。
luck_wei
2010-09-13
打赏
举报
回复
程序中确实使用了oracle数据库,但问题是当我的程序退出以后oracle的进程并不退出依然占有着此端口。
justkk
2010-09-13
打赏
举报
回复
不是吧,应该是你的程序使用了oracle数据库,让lsof看起来是这样子了..
VMWare安装
Oracle
11g详细过程
【原创】在虚拟机中安装
ORACLE
11g的过程!
ORACLE
常见错误代码的分析与
解决
三
ORACLE
常见错误代码的分析与
解决
三
Oracle
监听器被优化大师挂掉后的完美
解决
方法
主要介绍了
Oracle
监听器被优化大师挂掉后的完美
解决
方法,需要的朋友可以参考下
mysql和
oracle
的
端口
被占用_
Oracle
占用8080
端口
问题的
解决
可能在本地同时安装过Tomcat和
Oracle
的人都会知道,安装完
Oracle
后,会发现Tomcat的8080
端口
已经被
Oracle
占用了。完全安装
Oracle
数据库后,当我们访问8080
端口
时,会弹出一个XDB窗口,要求输入用户名和密码。这样将和我们本地一些使用该
端口
的应用冲突,比如tomcat、jboss等,虽然这些
端口
是可以修改的,但总是不爽
oracle
一直占用这个
端口
。其实那是
Oracle
...
防火墙开启
oracle
端口
号,在防火墙上开放
Oracle
服务
端口
的方法
Oracle
服务
端口
方面会有很多的问题,下面就将为您介绍在防火墙上开放
Oracle
服务
端口
的方法,希望对您学习
Oracle
服务
端口
方面能有所帮助。要使
Oracle
客户端能正常连接到设置有防火墙的安装在windows上的
Oracle
服务器,单开放一个1521或自定义的监听
端口
是不够的。我们有的时候需要映射
端口
远程去访问
Oracle
数据库,这里有个防火墙的问题,在unix上没有问题,但是在win 平台...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章