t181935471 2010-12-07 14:48
浏览 394
已采纳

java网络编程的一些问题

入口类:
[code="java"]package socketone;

public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    //开启线程数
    int threadCount=5;
    //最大端口号
    int maxPort=1000;
    //最小端口号
    int minPort=1;
    //端口递增量
    int portIncremenr=((maxPort-minPort+1)/threadCount)+((maxPort-minPort+1)%threadCount==0?0:1);

    SocketOne[] instances=new SocketOne[threadCount];
    //利用多线程将这个端口范围分成不同的段进行扫描
    for(int i=0;i<threadCount;i++){
        instances[i]=new SocketOne(minPort+portIncremenr*i,minPort+portIncremenr*i+portIncremenr-1);
        Thread thread =new Thread(instances[i]);
        thread.start();
    }
}

}
[/code]

端口扫描类:

[code="java"]package socketone;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketOne implements Runnable{
//最小端口号
private int minPort;
//最大端口号
private int maxPort;

public SocketOne(int minPort, int maxPort) {
    super();
    this.minPort = minPort;
    this.maxPort = maxPort;
}

@Override
public void run() {
    for(int i=minPort;i<=maxPort;i++){
        try {
            Socket socket=new Socket("127.0.0.1", i);
            if(socket.isConnected()){
                System.out.println("端口号:"+i+" 打开!");
            }
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

}
[/code]

就是很简单的一个本机端口扫描,利用多线程分配扫描端口范围,但是却一直提示以下异常:

[code="java"]java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.(Unknown Source)
at java.net.Socket.(Unknown Source)
at socketone.SocketOne.run(SocketOne.java:23)
at java.lang.Thread.run(Unknown Source)
[/code]

连接被拒绝,很是疑惑,连接本机都拒绝,但是在cmd下,我用telnet是可以连接的,系统是win7,大家知道怎么回事吗?
希望能帮忙解答下,小弟感激不尽!!!

  • 写回答

2条回答

查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。