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

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条)

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作