MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« : 13-09-2004 08:04 » |
|
Есть функция : void CViewText::OnSend(SOCKET s, LPCTSTR char_to_send) { USES_CONVERSION; int buf_len = sizeof(T2CA(char_to_send)); int dt_bt; if((dt_bt = send(s, T2CA(char_to_send), buf_len, 0)) <= 0) { int error = WSAGetLastError(); ::_MessageBoxFormat(NULL, TEXT("Error!"), MB_OK, TEXT("send error: %d; socket: %d"), error, s); closesocket(mysocket); WSACleanup(); }else{ //AfxMessageBox (_T("Data sent!"), MB_OK | MB_ICONINFORMATION); } } на терминале вижу получаемые символы, но почему то после каждого символа добавляется знак @ :l_smile:
|
|
« Последнее редактирование: 01-12-2007 14:21 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
npak
|
|
« Ответ #1 : 13-09-2004 08:29 » |
|
MOPO3, может быть, у тебя собрано как Unicode. В таком случае каждый символ ASCII представляется в виде двух байт: байта 0 и собственно символа. Возможно, именно этот ноль отображается как @
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #2 : 13-09-2004 08:32 » |
|
MOPO3, может быть, у тебя собрано как Unicode. В таком случае каждый символ ASCII представляется в виде двух байт: байта 0 и собственно символа. Возможно, именно этот ноль отображается как @ в каком порядке идёт этот байт 0 ? У меня получается на терминале запись вида : b@l@a@b@l@a@b@l@a@, т.е. сначала символ а затем уже собака
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
npak
|
|
« Ответ #3 : 13-09-2004 08:53 » |
|
MOPO3, в 16-байтном виде 0 в старшем байте. На х86 в памяти младший байт идёт первым, старший вторым. Поэтому при отправке сначала уходит ASCII код, следом за ним 0.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #4 : 13-09-2004 09:05 » |
|
npak, твоя правда Переписал send(s, T2CA(char_to_send), buf_len, 0)
на вот это send(s, T2CA(char_to_send), 1, 0)
и всё стало нормально работать
|
|
« Последнее редактирование: 01-12-2007 14:22 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
npak
|
|
« Ответ #5 : 13-09-2004 09:17 » |
|
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #6 : 14-09-2004 04:37 » |
|
npak, совсем забыл держи заслуженый плюсик за постоянную помощь и главное за толковые разъяснения
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
npak
|
|
« Ответ #7 : 14-09-2004 10:25 » |
|
MOPO3, спасибо
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #8 : 28-09-2004 07:08 » |
|
Продолжу эту тему чтобы новую не создавать. Использую ту же функцию что описана выше. При конекте к сокету на сервере, получаю сообщение что коннект установился, но далее при попытке послать данные, начинаю получать ошибку 10053, т.е. : An established connection was aborted by the software in your host machine. Что то как-то не пойму что за мигня у меня на машине отрубает коннект
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #9 : 28-09-2004 07:44 » |
|
MOPO3, сколько времени занимает время от коннекта до попытки послать???
Стоят ли файрвол и т.п. программки?
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #10 : 28-09-2004 07:52 » |
|
Гром, от контакта до посылки проходит около 5-10 секунд Схема такая : к моему ком порту физическому подрублен девайс. Этот девайс имеет выход на TCP/IP моя прога (подрублена к виртуальному кому) конектится к TCP/IP порту на этом девайсе далее, если я получаю на свой виртуальный ком данные, я их обрабатываю и посылаю на TCP/IP порт этому девайсу Конект проходит нормально, а вот дальше начинается То проходит всё как по маслу, то получаю описаные выше ошибки никаких файрволов на компе у меня не стоит
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #11 : 28-09-2004 07:59 » |
|
Предупреждать надо (С) Ты ж сразу говори, что есть девайс и ты сокет на ком порте открываешь... БЕз точного знания девайса вряд-ли что-то скажу - на ум приходит Тайм аут... от открытия до закрытия - проверяй...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #12 : 28-09-2004 08:03 » |
|
Гром, я не открываю сокет на ком порту Етот девайс имеет свой TCP/IP сервер Вся реализация у него внутри всё что он делает - это : если получил по сокету, гонит в ком и наоборот. Я просто конекчусь к нему как к TCP/IP серверу Ок, попробую с тайм аутами побавиться
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #13 : 28-09-2004 08:24 » |
|
Ага понял.
Но у тебя в таком случае на COM должен бежать протокол общения с сервером девайса, ведь должен ты ему указать что это за операция и какой пакет ты ему послал...
Кстати - это случайно не iChip??? Похоже черт подери...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Diletant
Помогающий
Offline
|
|
« Ответ #14 : 28-09-2004 08:31 » |
|
Вполне может быть, что срабатывает Timeоut от TCP. Можно попытаться по получении данных закрыть соединение, затем после обработки приконнектиться снова и передать данные. Или обмен данными должен осуществляться в одну сессию? Тогда нужно слать какую-нибудь поддерживающую контакт лабуду типа NOP. Известно сколько соединений одновременно поддерживает сервер?
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #15 : 28-09-2004 08:42 » |
|
Гром, не, не iChip Железку эту спаяли у нас(на рабитовском процессоре пашет), и успешно продают Похоже всё таки что дело в том, что сокет по таймауту закрывается. Буду дальше копать. Сенкс
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #16 : 28-09-2004 08:45 » |
|
Diletant, попробую как ты говориш, но как-то это некрасиво получается получил данные, закрыл соединение, обработал, открыл, послал... ИМХО думаю что таким образом замедлится скорость выполнения всех операций, а мне впереди светит ещё и увеличивать скорость.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #17 : 28-09-2004 10:53 » |
|
MOPO3, обязательно замедлится...
Проверяй установки time-out
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #18 : 28-09-2004 11:15 » |
|
Гром, так и было по таймауту обрубает коннект. Сделал что если при попытке послать в сокет данные соединение уже закрыто, то тогда делаю реконект.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #19 : 28-09-2004 12:37 » |
|
MOPO3, это может подтормаживать тоже и не мало... Попробуй подгадать установку тайм-аута на закрытие сокета так, что бы ты в 90% случаев успевал бы... Это можно статиситчески замерить сколько тебе надо при достаточно большой выборке....
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Diletant
Помогающий
Offline
|
|
« Ответ #20 : 28-09-2004 16:16 » |
|
Так ведь таймаут соединения чаще всего сервер определяет. А если пауза между получением данных и их отправкой составляет пять секунд, то тормоза на повторное соединение не сильно заметны будут.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #21 : 29-09-2004 05:24 » |
|
Гром, хорошо, попробую что нить сделать, или попрошу техников чтоб перепрограмили железку на больший таймаут Diletant, в принципе да, не сильно. Но с таким подходом, мне нужно дополнительный код писать, потому что при тестах обнаружил вот что : 1. приостановился поток данных, по таймауту отрубается сокет 2. далее идёт следующий поток данных, делаем реконнект 3. в результате, в зависимости от скорости реконекта, теряется как минимум один первый символ
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Mad
Гость
|
|
« Ответ #22 : 16-10-2004 13:22 » |
|
MOPO3, Выясни что железяка делает с OOB пакетами. и если просто игнорирует, то шли их с половиным интервалом timeoutа (или вообще, если точные таймауи не известен,постоянно )
|
|
|
Записан
|
|
|
|
|