- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 Java 方法,我试图用它来过滤通过网络接收的 PDU 消息,并只向用户显示符合过滤条件的 PDU:
public static void displayFilteredPdu(){
try{
EspduReceiver.socket = new MulticastSocket(EspduSender.PORT);
EspduReceiver.address = InetAddress.getByName(EspduSender.DEFAULT_MULTICAST_GROUP);
EspduReceiver.socket.joinGroup(EspduReceiver.address);
while(EspduReceiver.stopCapture == false){
byte buffer[] = new byte[EspduReceiver.MAX_PDU_SIZE];
EspduReceiver.packet = new DatagramPacket(buffer, buffer.length);
EspduReceiver.socket.receive(EspduReceiver.packet);
Pdu pdu = EspduReceiver.pduFactory.createPdu(EspduReceiver.packet.getData());
if(pdu != null){
System.out.print("Got PDU of type: " + pdu.getClass().getName());
if(pdu instanceof EntityStatePdu){
EntityID eid = ((EntityStatePdu)pdu).getEntityID();
Vector3Double position = ((EntityStatePdu)pdu).getEntityLocation();
System.out.println(" EID:[" + eid.getSite() + ", " + eid.getApplication() + ", " + eid.getEntity() + "] ");
System.out.println("Location in DIS coordinates: [" + position.getX() + ", " + position.getY() + ", " + position.getZ() + "] ");
/*Add PDU to ArrayList of PDUs */
EspduReceiver.espdu.add(pdu);
/* System.out.println(" PDU added to arrayList. ");
System.out.println(espdu); /*This is printing out the actual DIS messages (i.e. edu.nps.moves.dis.EntityState...),
maybe try adding the 'eid.getSite()', etc to an ArrayList instead. Use Associative arrays/ map/ hashmap */
// if(eid.getSite() != 0){
Filter.sitesToBeFiltered.add(eid.getSite());
System.out.println("Entity Site added to ArrayList. ");
// } else if(eid.getApplication() != 0){
Filter.applicationsToBeFiltered.add(eid.getApplication());
System.out.println("Entity Application added to ArrayList. ");
Filter.IDsToBeFiltered.add(eid.getEntity());
System.out.println("Entity ID added to ArrayList");
Filter.positionsToBeFilteredX.add(position.getX());
System.out.println("Entity X position added to ArrayList. ");
Filter.positionsToBeFilteredY.add(position.getY());
System.out.println("Entity Y position added to ArrayList. ");
Filter.positionsToBeFilteredZ.add(position.getZ());
System.out.println("Entity Z position added to ArrayList. ");
int i;
getFilterConditions();
for(i = 0; i < sitesToBeFiltered.size(); i++){
if(sitesToBeFiltered.get(i) == filter1Value){
//public double xPos = new Double();
Gui.displayFilteredOutput.append("\n");
Gui.displayFilteredOutput.append("EID: [" + sitesToBeFiltered.get(i) + ", " + applicationsToBeFiltered.get(i) + ", " + IDsToBeFiltered.get(i) + "]. ");
double filteredX = positionsToBeFilteredX.get(i);
double filteredY = positionsToBeFilteredY.get(i);
double filteredZ = positionsToBeFilteredZ.get(i);
//Vector3Double filteredEntityPosition =
Gui.displayFilteredOutput.append("\n Location in DIS coordinates: [" + filteredX + ":" + filteredY + ":" + filteredZ + "]. ");
}
}
}
}
}
}
catch(Exception e){
System.out.println(e);
e.printStackTrace();
System.out.println("Error in displayFilteredPdu() method. ");
/*09/04/2014 @ 17:100
* If this exception gets called, presumably it either means that pdu is not an instance of EntityStatePdu, or
* that pdu does not actually hold a packet. */
}
}
这个方法目前在一个名为 Filter.java 的类中,当用户单击 GUI 上的“过滤器”按钮时调用,并将继续调用直到变量 stopCapture
更改为 false(当用户单击 GUI 上的“停止”按钮时会发生这种情况)。
但是,调用时它的表现并不像我希望的那样:目前,当用户单击“过滤器”按钮时,将显示所有 System.out.println
语句在控制台中,显然正在输入 while
循环,但我没有在 GUI 中看到任何显示,我认为这表明 for
循环位于未进入 while
循环的结尾...而且 GUI 停止响应...
据我了解,GUI 停止响应的原因可能是因为我当前使用的是单线程程序,因此将此 displayFilteredPdu()
方法移动到另一个线程可能会阻止 GUI 崩溃,然后我可以使用该方法处理其他问题。
我尝试将方法移动到另一个类(称为 FilteredPdu.java),它扩展了 Filter,并更改按钮 ActionListener()
以从新类调用方法,即FilteredPdu.displayFilteredPdu();
,但我仍然遇到与 GUI 崩溃相同的问题。
知道这是为什么吗?
最佳答案
我认为将它移到另一个类中仍然会导致您的程序陷入无限循环。尝试创建一个扩展线程类,将显示过滤器 pdu 方法设置为:
这是新的线程类:
public class YourThreadClass extends Thread{
String fake_input_in_thread = null;
public YourThreadClass(String fake_input){
//constructor
//save the input / whatever you need to pass in from the other class here, and use it later
fake_input_in_thread = fake_input
}
public void run() {
//your filter code
try{
//now you can use the value pass-in from you main class. This should display "testing123" in console.
System.out.println(fake_input_in_thread);
EspduReceiver.socket = new MulticastSocket(EspduSender.PORT);
EspduReceiver.address = InetAddress.getByName(EspduSender.DEFAULT_MULTICAST_GROUP);
EspduReceiver.socket.joinGroup(EspduReceiver.address);
.............................
}
//put the below method into the thread class
public void endOfFilter(){
EspduReceiver.stopCapture = false;
}
}
当您的 GUI 需要触发该方法时,这就是您的主类的样子
//initialize
YourThreadClass thread = null;
public static void displayFilteredPdu(){
if(thread ==null){
//This string is to demostrate how you'd pass variables into your custom class, does not have any actual use
String str = "testing123";
thread = new YourThreadClass(str);
thread.start();
}
}
//in main code
public static void stopFilteredPdu(){
if(thread != null){
thread.endOfFilter();
thread = null;
}
}
关于java - 接收通过网络发送的 PDU,并在显示给用户之前按接收到的方式过滤它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562293/
PDU pdu = new PDU(); pdu.setType(PDU.SET); pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.100.1.1"
似乎是我需要解析在 SMS BroadcastReceiver 期间收到的 PDU 字节数组: @Override public void onReceive(Context context, Int
我正在尝试构建一些 PHP 代码以通过 telnet 将 SMS 发送到 SIM 服务器,但我在发送串联消息时遇到了问题。 我读过一些关于使用填充位将编码的消息七位字节变成八位字节的内容,但我不完全理
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我正在尝试使用 python 的内置 telnet 功能自动关闭与 APC PDU 连接的设备。我相信我可以输入用户名和密码,但之后无法继续。我的代码如下: telnet_session =
大家好,我改进了我的代码..这段代码适用于任意数量的字符,但是当我传递“~`!@#$%^&*()_-=+]}[{'”;:.,>”等符号时遇到问题没有输出。如果我只传递字符和数字,我会得到所需的输出。谁
我有以下 Java 方法,我试图用它来过滤通过网络接收的 PDU 消息,并只向用户显示符合过滤条件的 PDU: public static void displayFilteredPdu(){
是否可以仅使用 golang 解析 SMS PDU 执行AT指令 AT+CMGF=0 OK AT+CMGL=4 +CMGL: 0,1,,26 0791361907002039040C913619874
我正在处理 SMS 和 PDU,并创建串联消息以通过 GSM 调制解调器 (Cinterion MC35i) 发送,但是当我发送串联消息时,它从未出现在另一端。这是与调制解调器的通信记录: at OK
我需要帮助将 PDU 模式下的短信转换为 Java 中的文本模式。 最佳答案 尝试 Android PDUParser, http://www.androidjavadoc.com/m5-rc15/c
PDU 是结构体形式还是字符串形式? (在任何模式下)。我正在制作一个 C 程序,想通过 SMPP 向手机号码发送消息。要么使用结构,要么以单个字符串发送每个 PDU 内容? 最佳答案 您需要阅读 S
我正在使用 AltBeacon 库来处理我的信标(由 Shenzhen Minew Technologies Co., Ltd. 提供)。我使用以下 beaconManager.getBeaconPa
我已成功发送多部分 pdu 短信, 问题是当我尝试将此 SMS 发送到不同网络上的号码时,出现以下错误: +CMGS ERROR:500 谁能告诉我我该怎么做。 atCommandSt
我目前正在编写和应用程序,即发送/接收短信。 出于单元测试目的,我需要以编程方式创建 PDU。解码非常简单: Bundle bundle = intent.getExtras(); if (bundl
如何从 SMS PDU 中提取消息? 我需要从 SMS PDU 获取消息。当我使用一些在线服务时,它们工作正常。例如,这里 - http://www.diafaan.com/sms-tutorials
我正在尝试从 gosnmp 包返回的 SNMP PDU 中获取 OctetString 值。即使是字节也足够了。 这是我的代码: package snmp_abstract import (
我正在使用 Wireshark 中的消息制造规范 (MMS)。该工具无法剖析 ACSE 层。它没有显示任何错误,但将 ACSE 数据显示为 MMS 的一部分,即在表示层之后显示 MMS。如果wires
我想以 PDU 模式发送短信。我已经检查了我的调制解调器的规范,它支持 PDU 模式。 我已经开发了 PDU 编码器和解码器,但现在我不知道如何将数据发送到我的调制解调器。我尝试了这些 AT 命令:
任何人都知道 byte[] 数组中可用的 Java Pdu 解析器,我主要关心的是获得符合 GSM 标准的用户数据头 (UDH)。我的意思是得到它正确。 最佳答案 smsLib比较成熟。您还可以使用
我有一个项目使用 Cloudhopper 5.0.6 库来保持 SMPP 连接(3.4 版本)并发送或接收 PDU。我需要修改默认 PDUResopnse,因此,自定义 PDU 处理是通过以下方式扩展
我是一名优秀的程序员,十分优秀!