Или вы можете сделать это в Python ...

с:

Я тестирую раздел программного обеспечения для поиска неисправностей кабеля и хотел бы надежно и воспроизводимо генерировать неисправности кабеля на кабеле cat5.

В данный момент я использую раскрученный кабель длиной до метра и вручную извиваю кабель рядом с источником питания, но не могу обнаружить никаких сбоев в приложении (я читаю счетчики сбоев Ethernet на ASIC Ethernet.) Я не могу сказать, что это происходит из-за отсутствия сбоев или из-за того, что обнаружение программного или аппаратного обеспечения является ошибочным

Есть ли способ сделать это в программном обеспечении?

Я бы согласился написать что-нибудь на языке более высокого уровня, например, Java или python, и в крайнем случае хотел бы соединить это в C, но на самом деле я бы предпочел не переписывать драйвер Ethernet исключительно для исправления возможная ошибка

[РЕДАКТИРОВАТЬ]: я бы хотелСоздайте Неисправности кабеля - не обнаруживать их.

[РЕДАКТИРОВАТЬ]: Я передал большие файлы через FTP и SCP без проблем с помощью кабеля с доктриной, и не вижу ошибок при проверке трафика с помощью wireshark

[РЕДАКТИРОВАТЬ]: Смотрите такжепохожий вопрос в питоне.

Решение:

Что ж, потратив целый день на борьбу с C, это решение Python.

Сначала отключите автоматическое контрольное суммирование карты Ethernet:

sudo ethtool -K eth1 tx off

Затем отправьте свой хитрый кадр из python:

#!/usr/bin/env python

from socket import *

#
# Ethernet Frame:
# [
#   [ Destination address, 6 bytes ]
#   [ Source address, 6 bytes      ]
#   [ Ethertype, 2 bytes           ]
#   [ Payload, 40 to 1500 bytes    ]
#   [ 32 bit CRC chcksum, 4 bytes  ]
# ]
#

s = socket(AF_PACKET, SOCK_RAW)
s.bind(("eth1", 0))
src_addr = "\x01\x02\x03\x04\x05\x06"
dst_addr = "\x01\x02\x03\x04\x05\x06"
payload = ("["*30)+"PAYLOAD"+("]"*30)
checksum = "\x00\x00\x00\x00"
ethertype = "\x08\x01"
s.send(dst_addr+src_addr+ethertype+payload+checksum)

Кто сказал, что это должно быть сложно ...

PS:Я люблю Python.

Ответы на вопрос(1)

Ваш ответ на вопрос