Commit 7b1b3037 authored by captainwong's avatar captainwong

simple server ok

parent b5c539d7
......@@ -116,9 +116,9 @@ namespace csharp_dll_demo
}
// handle event
if (id == "HENG-BO")
if (id == "HENG-BO" || id == "ADM-CID")
{
pattern = @"\[\#(?<ademco_id>\d{6})\|(?<ademco_event>\d{4})\s(?<gg>\d{2})\s(?<zone>\d{3})\]";
pattern = @"\[\#(?<ademco_id>[\d|a-fA-F]{6})\|(?<ademco_event>\d{4})\s(?<gg>\d{2})\s(?<zone>\d{3})\]";
Console.WriteLine(Regex.Matches(data, pattern)[0].ToString());
}
}
......
......@@ -46,7 +46,7 @@ public class SimpleServer {
while (true) {
Socket socket = serverSocket.accept();
System.out.println("New client connected");
new SimpleServerThread(socket).start();
new SimpleServerThread(socket, lib).start();
}
} catch (IOException ex) {
......
package javademo.jni;
import java.io.*;
import java.net.*;
import java.util.regex.*;
public class SimpleServerThread extends Thread {
private Socket socket;
private AdemcoHbLibrary lib;
public SimpleServerThread(Socket socket) {
public SimpleServerThread(Socket socket, AdemcoHbLibrary lib) {
this.socket = socket;
this.lib = lib;
}
public void run() {
......@@ -19,17 +22,71 @@ public class SimpleServerThread extends Thread {
PrintWriter writer = new PrintWriter(output, true);
String text;
do {
text = reader.readLine();
System.out.println(text);
//String reverseText = new StringBuilder(text).reverse().toString();
// writer.println("Server: " + reverseText);
} while (!text.equals("bye"));
String line;
// 创建 Pattern 对象
String pattern1 = "\"(.+)\"(\\d{4}).+\\#(.+)\\[";
Pattern r1 = Pattern.compile(pattern1);
String pattern2 = "\\[\\#([\\d\\|a-fA-F]{6})\\|(\\d{4})\\s(\\d{2})\\s(\\d{3})\\]";
Pattern r2 = Pattern.compile(pattern2);
while(true){
line = reader.readLine();
if(line==null)continue;
System.out.println(line);
// 现在创建 matcher 对象
Matcher m = r1.matcher(line);
if (m.find()) {
String id = m.group(1);
int seq = Integer.parseInt(m.group(2));
int ademco_id = Integer.parseInt(m.group(3));
System.out.println("Found id: " + id);
System.out.println("Found seq: " + seq);
System.out.println("Found ademco_id: " + ademco_id);
switch(id){
case "ACK":break;
case "NULL": // reply ack
{
String ack = lib.packAck(seq, ademco_id);
System.out.println("replying ack:" + ack);
writer.write(ack);
writer.flush();
break;
}
case "HENG-BO":
case "ADM-CID":
{
// reply ack
String ack = lib.packAck(seq, ademco_id);
System.out.println("replying ack:" + ack);
writer.write(ack);
writer.flush();
// handle event
m = r2.matcher(line);
if (m.find()) {
int ademco_id16 = Integer.parseInt(m.group(1), 16);
assert(ademco_id == ademco_id16);
int ademco_event = Integer.parseInt(m.group(2));
int gg = Integer.parseInt(m.group(3));
int zone = Integer.parseInt(m.group(4));
System.out.println("Found ademco_event: " + ademco_event);
System.out.println("Found gg: " + gg);
System.out.println("Found zone: " + zone);
}else{
System.out.println("r2 NO MATCH");
}
break;
}
}
} else {
System.out.println("r1 NO MATCH");
}
}
socket.close();
} catch (IOException ex) {
System.out.println("Server exception: " + ex.getMessage());
ex.printStackTrace();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment