2013-07-07 5 views
-1

Я работаю в ИТ, и я узнаю о администрировании сетевой безопасности. Я хочу узнать, как использовать любой API сокетов TCP/IP для разработки и реализации основных клиент-серверных приложений. Нужно ли мне знать объектно-ориентированный язык программирования или существует ли уже большое количество готовых методов/функций для программирования TCP/IP?Какие знания необходимы для программирования TCP/IP?

+0

Быстрый поиск в Google «программирование сокетов» ответит вам на то, что вам нужно. Первые несколько результатов, которые показывают для меня, включают Python и C с примерами и подробной информацией. –

+0

Нужно ли мне знать весь язык программирования или я могу уйти, только изучая несколько вещей, связанных с программированием сокетов? – Sicypher

+0

Начните с руководства Beej здесь: http: // beej.us/guide/bgnet/ – selbie

ответ

2

Вам необходимо иметь четкое представление о потоке ввода-вывода, как файл IO. Как только вещи настроены, это фактически точно как поток IO для многих случаев использования. Это включает в себя концепцию потоков операций, а также правильную обработку ошибок системных вызовов.

Вам нужно будет понимать текстовые или бинарные протоколы, а особенно, когда нужно читать STOP. Для некоторых протоколов поток остается открытым от события к событию, но если вы читаете за пределами пакета данных, другой конец сокета может не отправлять вам что-либо, а ваш код будет блокироваться, и это, скорее всего, не то, что вы хотите. Быть способным заметить, когда вы должны прекратить чтение, очень важно. Некоторые протоколы используют маркер, другие используют длину, отправленную ранее. Это общая причина проблем для начинающих сетевых программистов.

Для двоичных протоколов вам необходимо понять расположение байтов чисел, в частности целые числа. Конкретно big-endian против little-endian против «сетевого порядка». Также нужно будет понять, как строить большие конструкции из байтов (опять же, в частности, целые числа из байтов). Если вы сделаете это ненадлежащим образом, ваши цифры будут совершенно неправильными.

Для клиента это почти все, что вам нужно. После создания сокета вы будете выполнять потоковые операции по результирующему сокету, отправлять и получать байты и блоки информации. Когда вы закончите, вы закроете сокет. Если протокол не указан, вы не должны полагаться на сервер, чтобы закрыть его сокет, чтобы указать вам, что это сделано. Удостоверьтесь, что вы очищаете свои ресурсы при выходе.

Если вы хотите создать сервер и обработать более одного запроса одновременно, вам понадобятся знания потоковой передачи, разветвления или асинхронного ввода-вывода для одновременного обработки нескольких запросов. После этого он становится очень похож на клиентскую сторону, за исключением того, что первоначальное создание прослушивающего сокета немного отличается.

Есть определенные нюансы и тонкости сетевого программирования, но для вашей базовой связи многие из них можно игнорировать.

Языки сценариев, Java и .NET делают сетевое программирование намного проще, чем C. C выдает сырые сокеты и оставляет все детали, но рутинные операции для вас. У вас, скорее всего, будет гораздо больше успеха, начиная с языка сценариев. Я не могу говорить ни с C или C++ библиотеками, которые упрощают сетевое программирование. Я уверен, что они существуют, я не могу ссылаться на них.

Вам также потребуется терпение, чтобы иметь дело с первоначальным разочарованием, ощущением HURRAY! когда он наконец работает, и удобный стул, чтобы сидеть сложа руки в конце, когда вы идете «Джи, теперь это было не так плохо, это довольно аккуратно», а затем мирно задуматься о том, что будет дальше.

Наконец, как я всегда предлагаю, не используйте CUT и PASTE пример кода. Независимо от того, что вы можете найти, введите его и попытайтесь понять каждую строку, когда вы вводите ее. У вас будет гораздо лучшее представление о том, как это работает, чем если вы просто что-то загрузите и посмотрите, как он работает.

+0

Благодарим вас за подробный ответ – Sicypher

Смежные вопросы