Вопрос № 53295: Здравствуйте уважаемые эксперты. Вот занимаюсь потехоньку сетевым программированием. И прочитал пару туториалов, в которых описаны WinSockets. Я сейчас уделяю внимание языку С++ и знаю что этот язык платформо - независемый. Если использовать программ...
Вопрос № 53.295
Здравствуйте уважаемые эксперты. Вот занимаюсь потехоньку сетевым программированием. И прочитал пару туториалов, в которых описаны WinSockets. Я сейчас уделяю внимание языку С++ и знаю что этот язык платформо - независемый. Если использовать программу, использующую WinSocks, то она вряд ли откомпилируется под linux (g++). А вот программы типа cout << "hello world"; будут результировать одно и тоже в линукс запуская terminal window и в windows запуская мс дос окно. Есть ли для сокетов такие библиотеки,
которые типичны для с++, как типа iostream.h? Или же приходится использовать отдельно сокеты для Window и отдельно для Linux? Если да, то понятие платфоромо-независмость хм.....
Заранее благодарю Вас за вашу помощь.
Отправлен: 26.08.2006, 00:06
Вопрос задал: igorok (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, igorok!
Библиотеки немного разные, но я как раз буквально вчера дописывал программу для работы с сокетами, чтобы она работала не только под UNIX, но и под Windows.
Исходников там 15кб, так что для этой формы, наверное, многовато, но могу послать на мыло (мне пишите по внутренней почте или на kirilloid<<=yandex.ru) Тем более, под рукой есть только старая и не совсем рабочая версия.
На словах пока еще могу добавить, что все-таки программа не совсем универсальная и в некоторых местах пришлось сделать директивы компилятора
типа #ifdef __WIN32__
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 26.08.2006, 01:17 Оценка за ответ: 5 Комментарий оценки: Спасибо. Так и знал, что тут что-то не то.
Отвечает: din
Здравствуйте, igorok!
То же самое можно сказать и про любой другой язык программирования. Я незнаю Единственный язык, который позволяет писать код, который ненужно переделывать под ОС, это Java. Тут уже все делает JVM. Да и сетевое программирование там реализовать намного проще. Если писать на С++ и пытаться делать единый код под несколько операционок, то тут уж куча директив для прекомпилятора, одним словом полная муть. Я уже не говорю про мейк файлы. Есть проект реализация gcc под винды, MinGW называется, я ковырялся, и решил не
париться. Написал на Java и запустил, работает, лично у меня проблем 60 МБ на диске для установки JRE нет.
Вот такое мое мнение.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 26.08.2006, 01:30 Оценка за ответ: 5 Комментарий оценки: Так и знал что без Java никуда мы грешные не денемся.
Отвечает: InviZ
Здравствуйте, igorok!
Программу, написанную с использованием WinSock будет очень несложно переписать под Linux если не использовать функции, начинающиеся с WSA, такие как WSAConnect, WSARecv и т.п. - а использовать функции, начинающиеся со строчных букв, и имеющих в большинстве случаев такие же параметры, как и BSD-сокеты - socket, listen, accept, connect, recv, send, inet_ntoa, inet_addr, htons, setsockopt...
В большинстве случаев даже не придется ничего менять...
В частности, я использую несколько директив - и все нормально работает:
#ifndef _WIN32
typedef int SOCKET;
typedef int socklen_t;
#endif
Ну и еще при инициализации добавить блок #ifdef _WIN32 ... #endif, куда поместить вызов WSAStartup
Ответ отправил: InviZ (статус: 2-ой класс)
Ответ отправлен: 26.08.2006, 08:11 Оценка за ответ: 5 Комментарий оценки: И все таки не такой с++ уж платформо-независимый.