В Python 3.7 re.Match
- это тип объектов, возвращаемых re.match
. См. bpo30397 .
В предыдущих версиях re.Match
не определено. Если вам нужна ссылка на тип объектов сопоставления, вы можете получить ее с помощью
Match = type(re.match('',''))
. Вы можете использовать dir
для типа Match
или для объекта сопоставления, чтобы перечислить его атрибуты и методы.
Я работал над этой проблемой в течение нескольких лет, разрабатывая продукт факса LAN. Я сомневаюсь, что можно сделать это хорошо.
Разработка виртуального драйвера COM означает разрабатывать драйвер ядра (если Вы не можете купить один с полки): который является выполнимым (я сделал это), но я предположу, что это - намного больше проблемы, чем это стоит (я был бы удивлен, стоит ли это Вашего в то время как).
Другая проблема состоит в том, что существует множество факс-модемов и стандартов факс-модема (и Вы говорите, что надеетесь эмулировать одно достаточно хорошо для одурачивания FaxMan).
Другая (существенная) проблема состоит в том, что более простые протоколы факса (нес коррекцией ошибок) являются (твердым) протоколом реального времени: существуют некоторые (более или менее) буферизующие на факс-модеме, но ПК, подключенный к факс-модему, не может, чтобы предоставить недогрузке при отправке или переполниться при получении..., что означает, что перенаправление этого трафика с помощью telnet (с таймерами TCP и буферами) любой повреждения сессия факса в худшем случае (FaxMan испытает таймаут) или в лучшем случае означает, что тестирование не является представительным для того, какова реальная (неэмулированная) производительность будет.
Что является Вами пробующий к стресс-тесту так или иначе: Ваше приложение или сторонний FaxMan?
Я предполагаю, что самое дешевое решение и самый реалистический тест использовали бы реальные аппаратные средства: реальные COM-порты, реальные факс-модемы, и реальный (или, возможно, моделируемый) телефонные линии.
Редактирование для ответа на вопросы из комментариев в ответе Michael
Предположение, что транспорт данных является небольшой проблемой (например, потому что можно просто соединить два последовательных порта вплотную), пишет программное обеспечение, которое эмулирует факс-модем небольшая проблема?
Это могло бы быть маленьким: если Ваш нагрузочный тест просто, "отправляют данные факса в битоприемник" затем, Ваш эмулированный модем главным образом просто должен ответить "хорошо" на каждое/что-либо, которое похоже на команду AT плюс различные другие ответы на различные определенные для факса команды AT+F_whatever_. Но это - довольно низкое качество, не очень строгое, тест.
Это было бы довольно просто - но не является там некоторым протоколом, вовлеченным в передачу данных ФАКСА? Или протокол является просто вариантом набора AT-команд, и спуфинг "OK" является всем, которое существует к нему? Я честно не знаю, но я предположил, что будет несколько более сложный протокол.
Протоколы телефона имеют имена как "T.4" и "T.30". Протокол ПК к факс-модему обычно является протоколом, названным "факс класса 1" или "факс класса 2". Последний ("класс 2" или "класс 2.0") является более высоким уровнем двух: больше ASCII и меньше двоичных данных, не, таким образом, чувствительных к синхронизации (класс 1 чувствителен к 10-м msec iirc), потому что он инкапсулирует/переносит больше базового согласования T.30, чем класс 1; это состоит из расширенных ПРИ командах (т.е. командах AT+F_something_ и их ответах) плюс дамп закодированных двоичным файлом данных изображения факса.
Некоторые ответы являются больше, чем просто "хорошо" (т.е. они представляют доступные/согласованные параметры сессии факса), но (в классе 2, а не классе 1) они закодированы ASCII, а не двоичный файл, таким образом, не слишком трудный действительно вообще.
Должно быть своего рода квитирование, правильно? Иначе простой, старый Факс, вероятно, потерял бы набор данных, когда это загружало новую страницу.
Да существует некоторое квитирование ("Я могу отправить теперь?") между страницами (т.е. перед каждой страницей). Эмуляция испытания на нагрузку, которая не тестирует синхронизацию, просто ответила бы "да, разрешение (я только собираюсь быть дампом данных в битоприемник так или иначе, даже не смотря на него, поэтому о чем я забочусь)", к запросу квитирования.
Эмуляция должна была бы также наблюдать данные двухуровневого изображения (который это получает от ПК) для <DLE><ETX>
и <DLE><DLE>
, для ответа хорошо в конце PC-dumps-image-data-to-the-modem.
Я не знаю, какие таймеры могли бы быть встроены в приложение FaxMan (действительно ли Вы, возможно, должны были добавить искусственные задержки со своими эмулированными ответами, предотвратить понимание FaxMan, что ответы неправильно быстры): возможно, не, но возможно.
Там может или может не быть никакое квитирование в странице:
Виртуальный модем: http://www.eltima.com/products/virtual-modem-pro/
Я думаю, что совет ChrisW является разумным - особенно получение средств моделирования телефонной линии - они не являются слишком дорогими и были очень полезной спиной, когда я сделал работу драйвера модема.
Тем не менее существует пакет драйвера с открытым исходным кодом, который (согласно их требованиям) позволяет Вам настроить пар виртуальных COM-портов: http://com0com.sourceforge.net/
Вы могли подключить приложение FaxMan к одному COM-порту затем ФАКС 'средство моделирования', которое обработало набор AT-команд и независимо от того, что находится в протоколе ФАКСА, который Вы хотите протестировать. Это походит на то, что Вы искали - но...