private String GetUserByFingerprint(String fp) { String sError = null; try { DatagramSocket sockUdp = new DatagramSocket(); sockUdp.setSoTimeout(8000); InetAddress adrs_Idsvr = InetAddress.getByName("127.0.0.1");// seidsvr.jar UDP 17020 byte[] wbuf = String.format("SysID=wssvr;Finger=%s;", fp).getBytes(); // fp: 0301... DatagramPacket wPkt = new DatagramPacket(wbuf, wbuf.length, adrs_Idsvr, 17020); sockUdp.send(wPkt); Thread.sleep(1000); byte[] rbuf = new byte[256]; DatagramPacket rPacket = new DatagramPacket(rbuf, rbuf.length); sockUdp.receive(rPacket);// Blocking... sockUdp.close(); String sBuf = new String(rbuf); // DevMsg=90,{UserName}; int iEqual = sBuf.indexOf('='); int iComma = sBuf.indexOf(','); int iCol = sBuf.indexOf(';'); if (iEqual>0 && iComma>0 && iCol>0) { if (iComma+1 == iCol) // not match return null; else return String.format("{\"UserName\":\"%s\", \"MatchScore\":%s}", sBuf.substring(iComma+1, iCol), sBuf.substring(iEqual+1, iComma)); } else { sError = sBuf; } } catch (Exception e) { sError = "GetUserByFingerprint: "+e.getMessage(); log.error(sError); } return String.format("{\"ErrorMessage\":\"%s\"}", sError); }
时间: 2024-04-28 19:19:25 浏览: 10
这段代码看起来像是一个 Java 方法,它的作用是根据指纹获取用户信息。它使用了 UDP 协议向本地地址为 127.0.0.1、端口号为 17020 的服务器发送了一个字符串,其中包含了系统 ID 和指纹信息。然后该方法等待 1000 毫秒,接收从服务器返回的消息,并解析该消息以获取用户名和匹配得分。如果解析失败,则该方法将返回错误消息。
相关问题
DatagramSocket socket = new DatagramSocket(); int hostPort =socket.getLocalPort();//获取当前收发地址的端口 String hostIP = InetAddress.getLocalHost().getHostAddress();
这段代码创建了一个 DatagramSocket 对象,并通过该对象获取了当前收发地址的端口号和本机的 IP 地址。
具体来说,第一行代码创建了一个 DatagramSocket 对象,该对象可以用于发送和接收 UDP 数据报。在创建 DatagramSocket 对象时,如果不指定端口号和 IP 地址,系统会自动分配一个空闲的端口号和本机的 IP 地址。
第二行代码调用 `getLocalPort()` 方法获取当前 DatagramSocket 对象绑定的端口号。
第三行代码使用 `InetAddress.getLocalHost().getHostAddress()` 方法获取本机的 IP 地址。`InetAddress.getLocalHost()` 方法返回一个表示本机的 InetAddress 对象,`getHostAddress()` 方法返回该 InetAddress 对象对应的 IP 地址。
private DatagramSocket socket; public Sender(DatagramSocket socket) { this.socket=socket; }的作用
这段代码定义了一个名为`Sender`的类,其中包含一个构造函数`Sender(DatagramSocket socket)`。构造函数接收一个`DatagramSocket`类型的参数,并将其赋值给类中的成员变量`socket`。
`DatagramSocket`是Java中用于实现数据报式Socket的类,因此这段代码的作用是:创建了一个`Sender`对象时,需要传入一个`DatagramSocket`类型的参数,以便在类的其他方法中使用该socket进行数据报的发送操作。