コード例 #1
0
    def OnClick_button_export(self):
        path = GUIUtility.AskSaveFile("保存隐蔽信道文件", "CSV file(*.csv)")
        info = list(self.serverPtr.clientMap.values())[self.index].MessagesPool

        def exportData(fileName: str, Infos: list) -> bool:
            import csv
            try:
                with open(fileName, 'w', newline='') as f:
                    f_csv = csv.writer(f)
                    f_csv.writerow(["IPDs", "Content"])
                    for i in range(0, len(Infos)):
                        if (isinstance(Infos[i], list)):
                            row = []
                            for j in range(0, len(Infos[i])):
                                row.append(Infos[i][j])
                            f_csv.writerow(row)
                        else:
                            f_csv.writerow([Infos[i]])
            except Exception as e:
                Debug.printError(str(e))
                return False
            return True

        if exportData(path, info):
            Debug.printInfo("导出成功!")
        else:
            Debug.printInfo("导出失败!")
コード例 #2
0
    def OnClick_DrawIPDsFile(self):
        path = GUI.get.GetLineEditText(self, "edit_ipds_file")
        if not path:
            Debug.printWarning("无法绘制图像:IPDs文件为空")
            return

        def readCSV(filePath, start=0, end=-1) -> list:
            ans = []
            with open(filePath) as f:
                reader = csv.reader(f)
                next(reader)
                next(reader)
                for row in reader:
                    try:
                        ans.append((float)(row[0]))
                    except ValueError as ve:
                        Debug.printError(str(ve))
            return ans

        ipds = readCSV(path)[0:150000]
        Debug.printInfo("读取完成,开始排序...")
        ipds.sort()
        Debug.printInfo("排序完成")
        plt.figure(1)
        plt.plot(x=list(range(len(ipds))),
                 y=ipds,
                 seriesName="IPCTC",
                 rgb=[0, 0, 255],
                 lineWidth=5,
                 xlabel="Times",
                 ylabel="Inter-packet delay",
                 windowTitle="TRCTC信道排序后 IPDs 分布规律")
        plt.displayAll()
コード例 #3
0
 def __init__(self, IP, port):
     # socket列表
     self.socket_list = []
     self.IP = IP
     self.port = port
     self.clientMap = {}
     Debug.printInfo("Test Info")
     Debug.printWarning("Test Warning")
     Debug.printError("Test Error")
コード例 #4
0
 def shutDown(self) -> bool:
     try:
         self.s.shutdown(2)
         self.s.close()
         Debug.printInfo("Disconnect from Server(ip=" + self.IP +
                         " ,Port=" + str(self.port) + ")")
         return True
     except Exception as e:
         Debug.printInfo(str(e))
         return False
コード例 #5
0
 def testConnect(self) -> bool:
     try:
         self.s = socket.socket()
         self.s.connect((self.IP, self.port))
         Debug.printInfo("connect to Server ip={} port ={}".format(
             self.IP, self.port))
         return True
     except Exception as e:
         Debug.printInfo(str(e))
         return False
コード例 #6
0
 def shutDown(self):
     try:
         for clientSocket in self.socket_list:
             clientSocket.shutdown(2)
             clientSocket.close()
         if self.socket_list:
             self.socket_list.clear()
             self.clientMap.clear()
             self.s.shutdown(2)
         self.s.close()
         Debug.printInfo("Server Closed")
     except Exception as e:
         Debug.printError(str(e))
コード例 #7
0
 def run(self) -> bool:
     try:
         # 创建socket对象
         self.s = socket.socket()
         # 绑定本地IP和端口
         Debug.printInfo("IP=" + self.IP + " Port=" + str(self.port))
         self.s.bind((self.IP, self.port))
         # 开始监听
         self.s.listen()
         # 循环等待连接
         Debug.printInfo("waiting for client to join in...")
         t = threading.Thread(target=self.waitForClient)
         t.start()
         #t.join()
     except Exception as e:
         Debug.printError(str(e))
         return False
     return True
コード例 #8
0
 def server_target(self, client, addr):
     try:
         while True:
             content = self.rec_from_client(client, addr)
             Debug.printInfo("received from " + str(addr) + ", content=" +
                             str(content))
             if str(content) == 'Fin' or content == None:
                 Debug.printInfo("Finished")
                 self.socket_list.remove(client)
                 client.shutdown(2)
                 client.close()
                 self.clientMap[addr].setStatus(
                     ClientInfo.CLIENT_STATUS_DISCONNECTED)
                 break
             else:
                 self.clientMap[addr].addMessage(content)
     except Exception as e:
         self.socket_list.remove(client)
         self.clientMap[addr].setStatus(ClientInfo.CLIENT_STATUS_INNERERROR)
         Debug.printError(str(e))
コード例 #9
0
    def waitForClient(self) -> None:
        while True:
            client, addr = self.s.accept()
            if (addr in self.clientMap):
                info = (ClientInfo)(self.clientMap[addr])
                info.clear()
            else:
                socket_info_list = (list)(addr)
                info = ClientInfo((str)(socket_info_list[0]),
                                  (int)(socket_info_list[1]))
                info.setStatus(ClientInfo.CLIENT_STATUS_CONNECTED)
                self.clientMap[addr] = info
            Debug.printInfo("connected Client:" + str(client))
            # 将客户端加入列表
            self.socket_list.append(client)

            # 为该客户端开辟一个线程
            threading.Thread(target=self.server_target, args=(
                client,
                addr,
            )).start()
コード例 #10
0
 def OnStart(self):
     GUI.set.WindowTitle(self,'hahahah')
     GUI.set.WindowIcon(self,'C:\\Users\\Timor\\Desktop\\testIco.bmp')
     GUI.set.Width(self,"spinBox1",200)
     GUI.set.Width(self,"spinBox2",200)
     Debug.printInfo("finished")
コード例 #11
0
 def OnClick_Button(self):
     qfont = (GUIUtility.AskFont("ask"))
     Debug.printInfo("famliyName=" + qfont.getFamilyName().stdstr())