Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
kambi Гость
|
Добавлено: Вс Июл 11 2004 13:58 Заголовок сообщения: утилита Ping - не могу отлинковать исходник |
|
|
Помогите, с исходниками.
Нашел в одной из старых тем ссылку на исходник для утилиты ping
(http://www.tangentsoft.net/wskfaq/examples/rawping.html)
Взял её и создал у себя в C++Builder5.0 проект консольного приложения. Запустил. Все нормально компилится, а линкер выдает ошибку:
[Linker error] Unresolved external 'WSASocketA' referenced from C:\My Projects\Console Ping\rawping.obj
Что у меня не так? Пробовал запускать и на Win2000Server, и на WinXp Professional. Может на этх виндах не пашут некоторые модули? |
|
Вернуться к началу |
|
|
kambi Гость
|
Добавлено: Вт Июл 13 2004 09:43 Заголовок сообщения: |
|
|
Так что, я не дождусь ответа? Людиии!!!...
Я уверен, что на этом форуме много хороших программеров, так почему они не могут помочь в таком вроде простом (но не для меня) вопросе? Возьмите, пожалуйста исходники (ссылку я дал) и проверьте, что надо сделать, чтобы заработала прога. |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вт Июл 13 2004 09:54 Заголовок сообщения: |
|
|
Добавьте в Ваш проект библиотеку ws2_32.lib, которая находится в билдеровской директории ...\Lib |
|
Вернуться к началу |
|
|
kambi Гость
|
Добавлено: Вт Июл 13 2004 10:26 Заголовок сообщения: |
|
|
Andy_user писал(а): | Добавьте в Ваш проект библиотеку ws2_32.lib, которая находится в билдеровской директории ...\Lib |
Спасибо, но как это мне сделать? Где это добавить? Извините за возможно примитивные вопорсы. Чувствую наверное скоро эта прога заработает |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вт Июл 13 2004 11:14 Заголовок сообщения: |
|
|
Добавить:
Project -> Add to project
Выбрать тип файла (.lib) и директорию, откуда добавить. Найти файл ws2_32.lib. Нажать Open.
---
Проверить:
View -> Project Manager
---
На будущее:
Help -> C++ Builder Help -> Find
Вставить строку поиска
"add to project libraries linking" |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Вт Июл 13 2004 11:37 Заголовок сообщения: |
|
|
Большой тебе фенкс, Andy_User. Просто я предполагал, что все необходимые библиотеки Билдер сам подключит . |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Вт Июл 13 2004 12:47 Заголовок сообщения: |
|
|
не знаком с билдером, но обычно среды разработки спрашивают о поддержке разл. библиотек в начале создания проекта.
(win32: Winsock, ATL, MFC, WTL etc., *nix: pthreads, QT, GTK, etc.) |
|
Вернуться к началу |
|
|
kambi Гость
|
Добавлено: Вт Июл 13 2004 13:36 Заголовок сообщения: программка циклится при отсутствии ответа от узла |
|
|
Теперь уже другой вопрос :
когда я с помощью этой утилиты пингую IP, которые по разным причинам не отвечают на запрос, программка циклится и всё, пока не Break-нешь не останавливается. Я думаю циклится вызов функции recvfrom в модуле rawping.cpp, так как он не получает ответа от пингуемого узла. Насколько я понял, это зависит от того блокируемый или неблокируемый сокет. Вобщем, как от этого избавится? Я не могу найти ответ в Хелпе, да и с английским не сильно дружу . |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вт Июл 13 2004 13:53 Заголовок сообщения: |
|
|
А как Вы хотите, чтобы Ваша программка поступала в случае, если ответ на пинг не приходит ?
Раз Вы начинаете познавать сетевое программировние, я рискну предложить сразу же знакомиться с многопотоковыми программами.
Один основной поток занимается вводом-выводом (интерфейс с оператором).
Второй поток занимается поддержкой очереди временных интервалов.
Третий поток - рабочий, в зависимости от команд оператора или от ситуации, складывающейся в программе, выполняет разные функции.
Естественно, сразу надо задумываться о взаимодействии этих потоков (критические секции, семафоры, мьютексы и т.д.) и глобальные списки для передачи информации между потоками. |
|
Вернуться к началу |
|
|
kambi Гость
|
Добавлено: Вт Июл 13 2004 15:40 Заголовок сообщения: |
|
|
Andy_user писал(а): | А как Вы хотите, чтобы Ваша программка поступала в случае, если ответ на пинг не приходит ? |
Я хочу написать прогу, которая бы автоматически проверяла работоспособность несколких каналов интернет и в случае отсутсвия канала переключала определенные потоки(маршруты) на другой канал (ну и всякие свои прибамбасы ).
Пока пишу что-то вроде подпрограммки, которая бы определяла наличие потерь пакетов на определеные IP. А дальше придумаю как обрабатывать это событие. Т.е. пока мне нужно научиьтся выполнять примитивную вещь - пустить пинг и определить есть потеря этого пакета или нет (в случае если пакет все же вернулся определить задержку).
Цитата: |
Раз Вы начинаете познавать сетевое программировние, я рискну предложить сразу же знакомиться с многопотоковыми программами. |
Сетевое программирование познаю по необходимости, но может быть это меня и затянет . На счет предложения освоения многопоточности - это конечно хорошо её познавать и может быть я за это возьмусь в скором будущем. Но как мою подпрограммку сейчас без неё реализовать? |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вт Июл 13 2004 16:20 Заголовок сообщения: |
|
|
Посмотрите функцию select. В билдере приличный хелп по ней.
Воспользуйтесь этой функцией до того, как будете читать информацию из сокета. |
|
Вернуться к началу |
|
|
kambi Гость
|
Добавлено: Ср Июл 14 2004 19:35 Заголовок сообщения: |
|
|
Andy_user писал(а): | Посмотрите функцию select. В билдере приличный хелп по ней.
Воспользуйтесь этой функцией до того, как будете читать информацию из сокета. |
Спасибо ещё раз, Andy_user. Функция select действительно помогла, пинги идут, потери определяю (по истечении задананного timeout-а).
Так, будем программить дальше... |
|
Вернуться к началу |
|
|
|