Я запускаю серверное приложение на ПК, который получает UDP-пакеты от клиента. Получены пакеты UDP (проверены в WireShark), но включают неправильную контрольную сумму. Я не контролирую клиента и должен иметь возможность получать эти пакеты в Python. Следующий код не видит пакеты:Получение UDP-пакетов с неправильной контрольной суммой в Python
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
print "\nReceived message '", data,"'"
UDPSock.close()
Во всяком случае в Python я могу получать искаженные UDP-пакеты?
Знаете ли вы, почему контрольная сумма ошибочна? Я имею в виду, что это должно быть обработано клиентом UDP. Код, который вы опубликовали, не видит пакеты, потому что его выбрасывает, вероятно, с помощью сетевого устройства подчеркивания, потому что контрольная сумма ошибочна, разрешите эту проблему. –
Как вы ЗНАЕТ контрольную сумму? Wireshark, работающий в системе _sending_, часто (почти всегда, в настоящее время) сообщает о плохих контрольных суммах, потому что расчет контрольной суммы переносится на адаптер, и драйвер не беспокоится о контрольных суммах. Это известная псевдо-проблема. Однако, если вы получаете плохие контрольные суммы в системе _receiving_, это еще одна проблема. –
Если вы действительно получаете плохие контрольные суммы, тогда нам понадобятся физические характеристики оборудования на обоих концах и по пути между двумя системами. –