#import tftpy import socket class UDPComm: __HEADER = "ABS" def __init__(self, ipSource, ipDestino, portDestino, asServer=False): self.ipSource = ipSource self.ipDestino = ipDestino self.portDestino = portDestino self.addr = (ipDestino,portDestino) self.answer = "none" #test self.mode = "none" self.openSocket(asServer) def openSocket(self, asServer): #self.socket_c = socket.socket(AF_INET,SOCK_DGRAM) self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,0) # self.socket_c.connect((self.ipDestino, self.portDestino)) if asServer: self.configAsServer() self.mode = "server" else: self.configAsClient() self.mode = "client" def configAsClient(self): #Configurar broadcast self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) def configAsServer(self): self.socket_c.bind(self.addr) print "\nServer initialized" def waitData(self, nbytes = 16384): print "\nWaiting some data" trama_rx, self.answer = self.socket_c.recvfrom(nbytes) print "\nThis socket has received some data from:" print self.answer ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx) return ipSource, ipDestino, cmd, data def sendData(self, cmd, data): if self.portDestino == 7000: trama_tx = self.__HEADER + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(cmd) + ":" + str(data) + ":" else: trama_tx = data if self.mode == "client": destiny = self.addr else: destiny = self.answer # Send messages if(self.socket_c.sendto(trama_tx, destiny)): print "Sending message:[" + trama_tx + "] to " + str(destiny) def __getTrama(self, trama): FrameList = trama.split(':') header = FrameList[0] ipSource = FrameList[1] ipDestino = FrameList[2] cmd = FrameList[3] data = FrameList[4] trash = FrameList[5] return ipSource, ipDestino, cmd, data class TCPComm: __HEADER = "JRO" __TYPE = "ABS" def __init__(self, ipSource, ipDestino, portDestino, asServer=False): self.ipSource = ipSource self.ipDestino = ipDestino self.portDestino = portDestino self.addr = (ipDestino,portDestino) self.sc = "none" self.answer = "none" #test self.mode = "none" self.len = 0 self.crc = 0 self.openSocket(asServer) def openSocket(self, asServer): #self.socket_c = socket.socket(AF_INET,SOCK_DGRAM) # self.socket_c = socket.socket() # self.socket_c.connect((self.ipDestino, self.portDestino)) if asServer: self.socket_c = socket.socket() # self.configAsServer() self.socket_c.bind(self.addr) self.mode = "server" else: # self.configAsClient() self.mode = "client" #Socket is opened at the sendData function # def configAsClient(self): #Buscar broadcast TCP # self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # self.socket_c.connect(self.addr) # pass # def configAsServer(self): # # self.socket_c.bind(self.addr) def waitData(self, nbytes = 1024): print "\nWaiting some client." if self.mode == "client": # Short data through ethernet trama_rx = self.socket_c.recv(nbytes) else: self.socket_c.listen(1) sc, addr = self.socket_c.accept() self.sc = sc self.answer = addr # Big data through ethernet trama_rx = "" while True: tmp = self.sc.recv(nbytes) trama_rx = trama_rx + tmp if trama_rx[-4:] == "quit": break print "\nThis socket has received some data." ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx) return ipSource, ipDestino, cmd, data def sendData(self, cmd, data, id): trama_tx = self.__HEADER + ":" + self.__TYPE + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(self.len) + ":" + str(cmd) + ":" + str(data) + ":" + str(self.crc) if self.portDestino == 7000: trama_tx = trama_tx + ":" + "quit" # Send messages if self.mode == "client": host = "192.168.1." + str(id) self.socket_c.connect((host, self.portDestino)) self.socket_c.send(trama_tx) else: self.sc.send(trama_tx) print "Sending message:[" + trama_tx + "]" def __getTrama(self, trama): FrameList = trama.split(':') header = FrameList[0] TypeOfInstrument = FrameList[1] ipSource = FrameList[2] ipDestino = FrameList[3] len = FrameList[4] cmd = FrameList[5] data = FrameList[6] crc = FrameList[7] trash = FrameList[8] return ipSource, ipDestino, cmd, data def close_socket(self): self.socket_c.close() def open_socket(self): self.socket_c = socket.socket() #class FTPComm: # # ftp_servidor = 'ftp.servidor.com' # ftp_usuario = 'miusuario' # ftp_clave = 'miclave' # ftp_raiz = '/public_html' # # def __init__(self): # # self.client = tftpy.TftpClient(self.ftp_servidor, '69') # # # def sendFile(self, filename): # # self.client.upload(filename) # #if __name__ == '__main__': # # obj = FTPComm()