Client

by w on March 8th, 2012
No notes
Syntax: Python
Show lines - Hide lines - Show in textbox - Download
import socket
import time
 
class Client():
 
    clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 
    serverAddress = 'localhost'
    serverPort = int(9999)
 
    file = ''
 
    def __init__(self, mode, file):
        self.file = file
        self.sendRequest(mode)
 
    def sendRequest(self, mode):
        if mode == "RRQ":
            self.sendRRQ()
        elif mode == "WRQ":
            self.sendWRQ() 
        else:
            print(mode, "Unknown operation mode.")
 
    def sendWRQ(self):
        request = 'WRQ-' + self.file
        self.clientSocket.sendto(str(request).encode(), (self.serverAddress, self.serverPort))
        self.sendData()
 
    def sendData(self):
        with open(self.file, "rb") as data:
            while True:
                packet = data.read(512)
                if packet != b"":
                    self.clientSocket.sendto(packet, (self.serverAddress, self.serverPort))
                else:
                    self.clientSocket.sendto(packet, (self.serverAddress, self.serverPort))
                    break
                time.sleep(0.0005)
 
    def sendRRQ(self):
        request = 'RRQ-' + self.file
        self.clientSocket.sendto(str(request).encode(), (self.serverAddress, self.serverPort))
 
        if self.receiveResponse():
            self.receiveData()
 
 
    def receiveResponse(self):
        response, server = self.clientSocket.recvfrom(512)
 
        if(str(response).__contains__("ERROR")):
            print(response)
            return False
            self.clientSocket.close()
        else:
            return True
 
    def receiveData(self):
        data = open("new.jpg", "wb")
        while True:
            packet, server = self.clientSocket.recvfrom(512)
            if packet.__len__() == 512:
                data.write(packet)
            else:
                data.write(packet)
                break
 
 
c = Client("WRQ", "img.jpg")
 
 
 
 
 
 

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS