WiFi指纹识别 - 删除SSID中不需要的语法

时间:2015-03-30 09:33:08

标签: android python string location wifi

我有一个Android应用程序可以获取SSID列表及其信号强度,并返回一个服务器进行分类。我遇到的问题是,建筑物内的某个人(遗憾的是我没有成功找到他们)有一个SSID叫做:

mark anderson's Network

正如您所看到的,他的SSID中有一个'导致服务器程序抛出语法错误:

----------------------------------------
Exception happened during processing of request from ('193.61.149.72', 61234)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "LocationBuildingServer.py", line 37, in handle
    input = ast.literal_eval(udpstring)
  File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/usr/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    [7,3,{'SERG J26':-45,'GlassWifi':-40,'SERG':-53,'Skynet':-62,'eng_j':-66,'Staff':-66,'eduroam':-66,'eduroam':-80,'Belkin_N+_2CD164':-66,'dlink_DWR-921':-58,'Visitor':-66,'dlink':-69,'Staff':-75,'eng_j':-80,'Staff':-76,'eng_j':-80,'eduroam':-77,'eduroam':-86,'Staff':-85,'Visitor':-75,'Visitor':-80,'Visitor':-79,'eng_j':-81,'eduroam':-83,'eng_j':-84,'Visitor':-81,'':-73,'eduroam':-84,'':-80,'Staff':-79,'eng_j':-86,'Staff':-84,'Visitor':-84,'eduroam':-86,'eng_j':-84,'Visitor':-85,'Staff':-87,'HP-Print-AC-Officejet 6600':-88,'HP-Print-D6-Photosmart 6520':-91,'eduroam':-77,'HP-Print-AB-Photosmart 7520':-88,'mark anderson's Network':-91}]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^
SyntaxError: invalid syntax
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('193.61.149.72', 61234)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "LocationBuildingServer.py", line 37, in handle
    input = ast.literal_eval(udpstring)
  File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/usr/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    [7,3,{'SERG J26':-41,'GlassWifi':-40,'SERG':-49,'Skynet':-62,'eng_j':-68,'Staff':-66,'eduroam':-70,'eduroam':-80,'Belkin_N+_2CD164':-69,'dlink_DWR-921':-54,'Visitor':-68,'dlink':-69,'Staff':-75,'eng_j':-80,'Staff':-79,'eng_j':-80,'eduroam':-77,'eduroam':-86,'Staff':-85,'Visitor':-75,'Visitor':-79,'Visitor':-79,'eng_j':-80,'eduroam':-79,'eng_j':-84,'Visitor':-84,'eduroam':-84,'':-80,'Staff':-81,'eng_j':-86,'Staff':-84,'Visitor':-84,'eduroam':-88,'eng_j':-84,'Visitor':-85,'Staff':-87,'HP-Print-AC-Officejet 6600':-88,'HP-Print-D6-Photosmart 6520':-91,'eduroam':-77,'HP-Print-AB-Photosmart 7520':-88,'mark anderson's Network':-91,'':-65}]

从应用发送SSID的代码段:

String message = "[" + xTxt.getText().toString() + "," + yTxt.getText().toString() + ",{";
  myWifiMan.startScan();
  List<ScanResult> wifiList = myWifiMan.getScanResults();
  if (wifiList != null){
    //Construct Clue
    for(int i = 0; i < wifiList.size(); i++){
      message = message + "'" + wifiList.get(i).SSID +"':" + Integer.toString(wifiList.get(i).level);
      if((i+1) < wifiList.size())
        message = message + ",";
     }
     message = message + "}]";
来自Python服务器的

片段:

def handle(self):
    udpstring = self.request[0].strip()
    clientid = self.client_address[0]
    input = ast.literal_eval(udpstring)
    xcoord = input[0]
    ycoord = input[1]
    scan = input[2]
    myFile = Settings.trainedFile %(xcoord,ycoord)
    path = os.path.join(Settings.trainedDataFilepath,myFile)

无论如何,我可以让我的程序忽略此SSID或从任何SSID中删除'字符? (来自应用程序或服务器)

0 个答案:

没有答案