java端口监听

xiaozhao175 2009-11-26 09:19:45
大家好,问大家一个问题,我想在tomcat下监听一个服务的端口,现在可以监听这个端口,我现在想如果这个端口在被一个程序使用,我如何通过这个端口控制这个程序,比如重启,断开等等,我想可不可以,谢谢了
...全文
543 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
myself100 2009-11-27
  • 打赏
  • 举报
回复
对其控制指令,比如Session.close
owen_008 2009-11-27
  • 打赏
  • 举报
回复
顶一个~~~~~~~~~~~~~~~
realreachard 2009-11-27
  • 打赏
  • 举报
回复
学习
aptweasel 2009-11-27
  • 打赏
  • 举报
回复
首先你想做,是肯定没有问题的,前提是,两个服务器都是在一台主机上,或是被监听的程序所在服务器,有一个守护进程。
道理很简单,你是一个客户端,你不可以提供服务,你只可以通过监听,去判断服务是启动还是停止,即使你可以给它发指令,如果服务没有起,它无法接受指令起动,所以我们只需要知道它的运行状态就可以了,然后执行操作系统指令,让电脑去执行启动和停止程序即可,如下
Process process = Runtime.getRuntime().exec(COMMAND);//WINDOWS/LINUX/UNIX都支持这个方法,但是命令不一样,需要分别对待。
如果你们不是在同一台主机上,那你就无法实现这样的功能了,所以你需要你监听的机器上有个东西来做这件事,所以就需要一个守护程序,当然它也必须是支持通讯的,如果服务死了,你给这个守护进程发指令,它得到指令后,执行本地的命令,让电脑去执行启动和停止程序。

这也是为什么一个人想远程操作你的电脑,先得在你的电脑里种上木马。
Mybeautiful 2009-11-26
  • 打赏
  • 举报
回复
我认为,如果占用该端口的程序没有提供可使用的控制接口,要实现这样的功能是不可能的。

无论如何,要做到这件事,少不了以下步骤。
1. 知道是哪个程序占用的你想要的端口.
2. 找到该程序的关闭,重启等方法(貌是只有使用系统方法关闭重启)。如果启动该程序是要带参数的,你怎么设置?

持续关注中...
fengboxjtu556 2009-11-26
  • 打赏
  • 举报
回复
自己做一个协议吧
gao512008 2009-11-26
  • 打赏
  • 举报
回复
不懂 学习
zfangla 2009-11-26
  • 打赏
  • 举报
回复
赞成1楼的说法, 其实就是简单的两个进程SOCKET通信问题, 但需要两个方面都有共同的消息包协议. 或者说, 你必须有办法知道那个程序的消息包结构, 以及支持的服务功能.
xiaozhao175 2009-11-26
  • 打赏
  • 举报
回复
现在是这样的,就是tomcat是服务端,我的监听程序放在tomcat下,客户端的一个程序的端口就是我要监听的端口,我可不可以通过这个端口来控制这个程序的打开,关闭等等
OnlyLikeJava 2009-11-26
  • 打赏
  • 举报
回复
不知道楼主的这个程序是跑在linux还是windows,如果是linux的话你可以使用java的Runtime执行一个linux命令来中止程序的运行(要终止的程序也在linux),重启的话也可以通过Runtime类来实现(你需要知道此程序的具体位置)。
如果是windows可能就比较麻烦了。
苍蝇①号 2009-11-26
  • 打赏
  • 举报
回复
一个端口只能分给一个进程,在同一个进程里面想这么用都行,除了进程无能无力,除非自己构造IP包,那属于后话
passself 2009-11-26
  • 打赏
  • 举报
回复
应该是可以的,楼主可以换一个端口就可以了
rumlee 2009-11-26
  • 打赏
  • 举报
回复
两边协定好指令的意义,服务端接收到重启的指令就重启不就可以了。
霜之哀伤 2009-11-26
  • 打赏
  • 举报
回复
那要看那个程序是否支持了。
一般应该是向那个端口发指定的消息就行了吧,但消息格式要是那个程序指定的格式。
铁匠梁老师 2009-11-26
  • 打赏
  • 举报
回复
对端口上侦听,做对应的响应时协议规定的。
whut0802 2009-11-26
  • 打赏
  • 举报
回复
学习,帮顶
hbwhwang 2009-11-26
  • 打赏
  • 举报
回复
如果这个程序是你写的或者你有源代码,就加上控制协议
如果这个程序无法修改了,那么你只能通过操作系统来杀死这个程序进程,再起一个新程序。
判断端口是否被占用是很简单的,java.net里面有相应的方法支持这个功能。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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