java socket监控端口

dsdddddddddddddddd 2012-09-06 05:38:46
代码如下:

import java.io.IOException;
import java.net.ServerSocket;

public class Main {

public static void main(String[] args) {
if (open()) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while (true) {
System.out.println("java------------");
}
}
}

private static boolean open() {

try {
ServerSocket ss = new ServerSocket(8011);
return true;
} catch (IOException e) {
return false;
}

}
}



问题:
socket开启端口以后,在执行sleep阶段,在cmd中通过
 netstat -aon|findstr "8011"

是可以看到端口确实在开启状态并且能看到进程号。
在sleep结束以后,进入
while(true){}
循环,
在执行上面的命令,发现端口已经关闭,
请问,为什么程序走到whiletrue里面以后,socket就关闭呢?
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsdddddddddddddddd 2012-09-07
  • 打赏
  • 举报
回复
情况是这样的饿
如果不是while循环 是其他的 比如说 new classpathApplictioncotext();
只要spring容器不结束,socket就一直存在。
只是当while循环的时候,socket则个端口,在系统里就找不到了
  • 打赏
  • 举报
回复
这个ss的socket创建后,并没有做其他操作,比如accept都没有,所以他new完就销毁了,因为没有用。
dsb_csdn 2012-09-07
  • 打赏
  • 举报
回复
执行完了吧,应该在while循环加ss.accept();不停地等待接收来自客户端的请求吧。这个是阻塞式的。。

62,614

社区成员

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

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