社区
C++ 语言
帖子详情
oracle进程老是与我抢端口,怎么解决?
luck_wei
2010-09-13 03:58:37
我的程序是linux环境下开发的,初始化时启动socket监听23456端口;
初始化完成后使用lsof查看23456端口发现oracle的进程也在监听这个端口;
谁知道什么原因?
...全文
180
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
服务器,单开放一个1521或自定义的监听
端口
是不够的。昨天晚上为了测试BOM的多层转单层程序,而需要连接到服务器上的
Oracle
将数据导入。因为服务器重装成Windows2003了,并开放了系统自带的防火墙,在连接中发现在防火墙上打开监听
端口
1521后还是无法连通,报连接超时错误。于是试将防火墙关闭,就可以...
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章