Python sendto говорит мне, что ему нужен int - PullRequest
0 голосов
/ 14 ноября 2018
from socket import *
import packets
image = "testfile.bmp"

# open image
bufferSize = 2048
myfile = open(image, 'rb')
sequenceNumber = 0
totalBytes = 0

serverName = "127.0.0.1"
serverSendPort = 12000
serverSendPort = int(serverSendPort)
serverListenPort = 12001
clientSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket = socket(AF_INET, SOCK_DGRAM)

while (1):
    if (sequenceNumber == 0):
        data = packets.mkepckt(myfile.read(bufferSize), 0,         
packets.calculateChecksum(myfile.read(bufferSize), bufferSize))
        clientSocket.sendto(bytearray(data),(serverName, serverSendPort))
        sequenceNumber = 1

        ACK,  = serverSocket.recvfrom(bufferSize)
        ACKchecksum = packets.calculateChecksum(ACK[1], bufferSize)

        while (ACK[0] is not 0 or ACKchecksum is not ACK[2]):
            clientSocket.sendto(data, (serverName, serverSendPort))
            ACK,  = serverSocket.recvfrom(bufferSize)
            ACKchecksum = packets.calculateChecksum(ACK[1], bufferSize)

    elif (sequenceNumber == 1):
        data = packets.mkepckt(myfile.read(bufferSize), 1,     
packets.calculateChecksum(myfile.read(bufferSize), bufferSize))
        clientSocket.sendto(bytearray(data),(serverName, serverSendPort))
        sequenceNumber = 0

        ACK,  = serverSocket.recvfrom(bufferSize)
        ACKchecksum = packets.checksum(bufferSize, ACK[1])

        while (ACK[0] is not 1 or ACKchecksum is not ACK[2]):
            clientSocket.sendto(data, (serverName, serverSendPort))
            ACK,  = serverSocket.recvfrom(bufferSize)
            ACKchecksum = packets.calculateChecksum(ACK[1], bufferSize)

myfile.close()

clientSocket.close()
serverSocket.close()

Не уверен, что мне нужно поместить весь код, но лучше, чем потом сожалеть. Так по какой-то причине, несмотря на то, что у меня есть int в sendto. Я также перепробовал все виды встраивания типов, от встраивания каждого отдельного элемента до встраивания целого как int, и все еще получаю эту ошибку.

1 Ответ

0 голосов
/ 17 ноября 2018

Благодаря помощи @RemyLebeau я смог решить эту проблему, импортировав pickle и использовав его для выгрузки моего кортежа в переменную, а затем отправив эту переменную в качестве данных. Не уверен, почему байтовые данные выдавали ошибку об int, но вы идете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...