Другие языки программирования и технологии
язык Си (C++). необходимо проверить наличие подключения к сети интернет
желательно без обращения к явным системным вызовам (вроде system("ping")). поясню зачем - хочу, чтобы можно было собрать одинаково успешно и для Вин, и для линукса. пишу простенькую програмку, которая при наличии доступа к сети будет сохранять файл на сетевой девайс, иначе на своем диске. заранее спасибо и прошу прощение за дилетантство. буду рад любым советам
поройся здесь
http://www.ping127001.com/pingpage/ping.text
http://www.ping127001.com/pingpage/ping.text
если работаешь просто по IP адресу - собственно открываешь сокет и конектишься к гуглу например
Иначе вызываешь функцию преобразующую доменное имя в IP адрес - она обратиться к DNS серверу и вернёт IP - если вернула - хороший признак - открываешь сокет и конектишься... А если нет то в идеале варианта два - либо нет подключения к интернету, либо используется прокси сервер. Ну собственно опрашиваешь систему и выясняешь - прямое ли подключение или через проксю, если прямое - ну значит чё-то где-то не работает, если через проксю - определяешь тип прокси сервера и по нужному протоколу работаешь через проксю. Только опрос системы лучше сразу делать, к чему тратить лишнее время на таймауты? Не хочешь обращаться к системе - ищи готовые классы где уже за тебя всё сделали.
Иначе вызываешь функцию преобразующую доменное имя в IP адрес - она обратиться к DNS серверу и вернёт IP - если вернула - хороший признак - открываешь сокет и конектишься... А если нет то в идеале варианта два - либо нет подключения к интернету, либо используется прокси сервер. Ну собственно опрашиваешь систему и выясняешь - прямое ли подключение или через проксю, если прямое - ну значит чё-то где-то не работает, если через проксю - определяешь тип прокси сервера и по нужному протоколу работаешь через проксю. Только опрос системы лучше сразу делать, к чему тратить лишнее время на таймауты? Не хочешь обращаться к системе - ищи готовые классы где уже за тебя всё сделали.
Раз "будет сохранять файл на сетевой девайс", значит проверять доступ надо к сетевому девайсу, а не к абстрактному интернету. Может политика будет настроена так, что запрещено всё, кроме разрешенного.
си тут ни при чем. тут надо понимать сам принцип подключения к инету или сети. например можно попробовать подключиться к какому либо порту по, который ДОЛЖЕН работать на сетевом ресурсе. можно на сетевой комп, к которому нужно подключиться повесить сервер, который будет держать порт открытым и при подсоединении к нему давать добро на копирование.
Похожие вопросы
- В чём разница между языками СИ. C++ или С# и прочие.. . и какой лучше изучать
- Почему язык СИ такой сложный?
- помогите пожалуйста проверить код на языке си, программа работает неверно - не выдает сумму массива Z
- Программирование на языке СИ с использованием подпрограммы-функции
- Вопросы по языку СИ
- Программирование на языке Си. Нужна небольшая помощь.
- какую программу лучше использовать для программирования на языке Си?
- Язык Си. Читаю K&R (книга автора языка с примерами). Упражнение 1.10
- Язык программирования C#
- Язык программирования C.