Я работаю с клиент-серверным приложением, которому нужно отправить команду чтения из файла сценария.
Формат файла сценария следующий.
CONNECT <www.abcd.com,80>
SEND : AB 40 01 FF 00 00 00 09 01 01 07 00 00 C0 A8 01 87 AE
MATCH<s,10>: AB 40 01 FF 00 00 00 09 01 01 07 00 00 C0 A8 01 87 AE
SEND : AB 34 01 FF00 00 00 0C 01 01 07 00 01 01 07 00 FF FF FF FF AE
DISCONNECT
note: s in match is wait time in seconds.
here second byte is Msg ID.
При обнаружении команды совпадения программа должна дождаться совпадения в течение указанной секунды и затем перейти к следующей команде.
У меня в приложении запущено два потока
- Поток слушателя - он будет получать данные с сервера. (Здесь используется select ())
он будет запущен, когда программа встретит команду connect, и завершится, когда
встретится с разъединением в конфигурации. - основной поток, который будет читать команду из файла конфигурации и выполнять.
Теперь при обнаружении совпадения основной поток должен отправить строку сопоставления в поток прослушивателя для сопоставления и ждать там сигнала от потока слушателя.
Поток прослушивателя сопоставит строку с данными, полученными с сервера, если он совпадет, он выделит событие (окна SetEvent ()) для основного потока, а затем основной поток запишет «Соответствие найдено» другим образом, еслизатем он будет записан как «Соответствие не найдено»
Я думал о наличии глобальной переменной char * g_MatchString. Основной поток будет обновлять эту переменную всякий раз, когда есть команда соответствия, и ждать события (события Windows) длябудьте выделены, и время ожидания будет равно времени матча.
Мне, ребята, нужна информация о том, правильный ли мой подход.