如何使用java计算Usb端口?

时间:2014-04-28 06:18:45

标签: java sockets

我想检查系统中的空闲(未占用)的USB端口列表,当我用CommPortIdentifier.getPortIdentifiers()检查时,这会返回带有0个元素的Enumeration 我也在类路径中添加了librxtxcomm.jar。

这应返回每个端口详细信息

Enumeration pList = CommPortIdentifier.getPortIdentifiers(); 
System.out.println(pList.hasMoreElements());

这将返回0表示没有列表/枚举。

休息代码:

public class CommPortLister{

    /** Simple test program. */
    public static void main(String[] ap) {
        new CommPortLister().list();
    }

    /** Ask the Java Communications API * what ports it thinks it has. */
    protected void list() {
        // get list of ports available on this particular computer, by calling static method in CommPortIdentifier.

        System.out.println("");
        Enumeration pList = CommPortIdentifier.getPortIdentifiers();
        System.out.println("Before While");
        // CommPortIdentifier.getPortIdentifiers(); 
        // Process the list.
        System.out.println(pList.hasMoreElements());

        while (pList.hasMoreElements()) {
            System.out.println("While Loop");
            CommPortIdentifier cpi = (CommPortIdentifier) pList.nextElement();
            System.out.print("Port " + cpi.getName() + " ");
            if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                System.out.println("is a Serial Port: " + cpi);
            } else if (cpi.getPortType() == CommPortIdentifier.PORT_PARALLEL)  {
                System.out.println("is a Parallel Port: " + cpi);
            } else  {
                System.out.println("is an Unknown Port: " + cpi);
            }
        }
        System.out.println("After While");
    }
}

我无法检测USB端口时检测USB端口的代码

3 个答案:

答案 0 :(得分:1)

端口号是16位无符号整数,范围从1到65535。 如果您需要知道哪些端口被占用,可以从java调用系统命令“netstat”。

=====被修改=========================== 以上信息适用于传输层逻辑端口。如果要查找外围设备的硬件端口,则需要检查COM端口。我找到了以下教程,也许你可以尝试一下,所以找另一个适合你需要的教程。

http://www.java-samples.com/showtutorial.php?tutorialid=11

你需要javax.comm api。您可以从http://www.java2s.com/Code/Jar/c/Downloadcomm20jar.htmhttp://www.oracle.com/technetwork/java/index-jsp-141752.html

抓取它

答案 1 :(得分:1)

请尝试使用ServerSocket(portNo)。如果端口中有服务正在运行,则会出错,因此请捕获异常并尝试下一个端口。

答案 2 :(得分:-1)

那么使用它的东西你可以有可用的端口你可以扫描它。

public class GettingAvaliable {

    public static void main(String args[]) {
        int startPortRange = 0;
        int stopPortRange = 65365;
        int usedport = 0;
        int unusedports = 0;

        for (int i = startPortRange; i <= stopPortRange; i++) {
            try {
                Socket ServerSok = new Socket("127.0.0.1", i);
                System.out.println("Port in use: " + i);
                usedport++;
                ServerSok.close();
            } catch (Exception e) {
                //e.printStackTrace();

            }
            System.out.println("Port not in use: " + i);
            unusedports++;
            if (i == stopPortRange) {
                System.out.println("Number of Used Ports In Your Machine: "+usedport);
                System.out.println("Number of Unused Ports In Your Machine: "+unusedports);
            }

        }
    }
}