ServerSocket(int port) 如果能够绑定,说明这个本地端口可用;如果异常,可能是已经被某个程序占用了。

解决方案 »

  1.   

    再进一步问
    如果知道某个端口已经被其它程序占用了
    怎么监听这个端口??java可以实现吗?
      

  2.   

    仍然是ServerSocket s = new ServerSocket(PORT);
    如果被占用,则建立失败,抛出IOException,你捕获就行了
      

  3.   

    to snowofjuly(清云) 
    既然ServerSocket s = new ServerSocket(PORT)抛出异样了
    我该如何监听这个PORT呢?
      

  4.   

    try{
       ServerSocket s = new ServerSocket(PORT);
    }
    catch(Exception IOException){
       /*处理异常*/
    }
    finally{
       s.close();
    }或者用java.net.BindException也可
      

  5.   

    呵呵
    楼上的还是没明白我的意思
    我要问的就是这个/*处理异常*/该怎么写??
    既然ServerSocket s = new ServerSocket(PORT);抛出异常了
    那么这个s根本就没有实例化
    那么这个/*处理异常*/该怎么写呢?
      

  6.   

    如何处理异常在于你整体程序的设计思路和功能考虑
    ServerSocket构造函数失败,程序直接终止
    也不会遗留任何已开启的sockets
    你想怎么处理呢
      

  7.   

    呵呵,还是楼上的彻底明白了我的意思
    我的确没有系统的学过操作系统
    那么请问能不能得到一个被其他程序占用的端口的数据流?
    像游戏外挂,sniff这样的工具不就是用来监听已打开的端口的吗?
    并且分析这些端口传来的数据流,他是如何实现的?请高手指教
      

  8.   

    可能确实是没明白你的意思,抱歉
    你原来是想监听端口来抓包,这好象不应该放到异常里来处理,jdk也好象没提供这样的类和函数
    需要hook API,你还是用c++好点