java - 使用套接字处理生物指纹考勤机

标签 java sockets network-programming fingerprint biometrics

我正在尝试使用 Java 程序连接生物识别指纹考勤设备。我使用的设备是 Biocom 指纹考勤系统。但是,我正在搜索和阅读相关内容,我看到 SDK 可以根据设备类型使用(这很难,不合逻辑,而且,它不是全局解决方案!)

我正在研究有关如何使用指纹设备连接、发送和检索数据的全局标准,但我又一次没有幸运地找到明确的解决方案。目前,我试图通过创建一个 Socket 对象(通过以太网端口)来连接设备,但也没有与我一起执行。这个开放的无限循环问题在我头上。

  • 是否有任何通用的标准方法可以使用 Java 连接、发送和检索此类设备的数据?
  • 能否将 Socket 视为此类问题的解决方案?
  • 如果是,我下面的代码有什么问题?除了主机 IP 和端口号之外,还需要什么额外的东西来连接设备?

使用的Socket代码:

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

public class Requester {
Socket requestSocket;
ObjectOutputStream out;
ObjectInputStream in;
String message;

Requester() {
}

void run() throws IOException {
    try {
        // 1. creating a socket to connect to the server
        requestSocket = new Socket("192.168.0.19", 4370);
        System.out.println("Connected to given host in port 4370");
        // 2. get Input and Output streams
        in = new ObjectInputStream(requestSocket.getInputStream());
        // 3: Communicating with the server
        String line;
        while (true) {
            line = in.readLine();
            if (line != null) {
                System.out.println(line);
            }
        }
    } catch (UnknownHostException unknownHost) {
        System.err.println("You are trying to connect to an unknown host!");

    } catch (IOException ioException) {
        ioException.printStackTrace();

    } catch (Exception Exception) {
        Exception.printStackTrace();

    } finally {
        in.close();
        requestSocket.close();
    }
}

void sendMessage(String msg) {
    try {
        out.writeObject(msg);
        out.flush();
        System.out.println("client: " + msg);

    } catch (IOException ioException) {
        ioException.printStackTrace();
    }
}

public static void main(String args[]) throws IOException {
    Requester client = new Requester();
    client.run();
}
}

此图片可能会提供更多详细信息:

最佳答案

您不需要 ObjectInputStream。只需使用从 requestSocket.getInputStream() 获得的 InputStream

或者使用像 putty 这样的终端程序连接到您的设备。这不需要编码。

关于java - 使用套接字处理生物指纹考勤机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990924/

相关文章:

java静态内部类初始化错误

c# - 套接字只接收部分消息 C#

php - "Fatal error: Call to undefined function socket_create()"即使在 php.ini 中启用

sockets - 自动重新连接套接字客户端的设计选择

java - 在 HashSet 中存储坐标

java - Selenium 网络驱动程序。从 div 列表中选择元素

c++ - 自动检测 TCP 连接是否使用 SSL/TLS?

linux - 哪种双栈服务器方法更好?

java - 如果端口对多播组无关紧要,为什么 DatagramSocket.joinGroup() 方法采用 SocketAddress?

java - 使用多个类实例化二维对象数组