* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Использование сокетов в Delphi
Многочисленные вопросы на Круглом столе, посвящённые передаче данных по сети с помощью сокетов, показывают, что эта тема достаточно актуальна, но вызывает некоторые сложности у начинающих программистов. Данная статья является первой в цикле из трёх статей, призванных дать ответы на подобные вопросы. Она посвящена стандартным сокетам. Вторая статья будет посвящена сокетам Windows, а третья - внутреннему устройству классов VCL, предназначенных для передачи данных с помощью сокетов. Статьи не претендуют на исчерпывающее освещение проблемы (в частности, будут обсуждаться только протоколы TCP и UDP), однако они должны дать сведения, достаточные для понимания основных механизмов работы сокетов и дальнейшего самостоятельного их изучения. В статьях много дополнительной информации, которая не является необходимой непосредственно для написания программы, но расширяет кругозор в данной области знаний. Строго говоря, если писать только то, что необходимо для простейшей организации связи, каждая из трёх статей цикла уместилась бы на странице. Но в таком виде это было бы полезно только ламерам, которым лишь бы содрать откуда-нибудь готовое решение и абы как вставить его в свою "программу". А моя цель - написать что-то полезное для тех, кто пока ещё не знаком близко с сокетами, но хочет в первую очередь понять, как они устроены, а не получить что-то готовенькое. Таким людям, на мой взгляд, будет полезно знать то, что находится вокруг, потому что это знание помогает искать решения в нестандартных ситуациях.
23 февраля 2009 | Borland Delphi | Alex | | 4175
 


Передача данных при использовании UDP
Мы наконец-то добрались до изучения того, ради чего сокеты и создавались: как передавать и получать с их помощью данные. По традиции начнём рассмотрение с более простого протокола UDP. Функции, которые рассматриваются в этом разделе, могут быть использованы и с другими протоколами, и от этого их поведение может меняться. Мы здесь описываем только их поведение при использовании UDP.
23 февраля 2009 | Borland Delphi | Alex | | 12871
 


Соглашения об именах
Первые библиотеки сокетов писались на языке С. В этом языке идентификаторы чувствительны к регистру символов, т.е., например, SOCKET, Socket и socket - это разные идентификаторы. Исторически сложилось, что имена встроенных в С типов данных пишутся в нижнем регистре, имена определённых в программе типов, макроопределений и констант - в верхнем, имена функций - в смешанном (большие буквы выделяют начала слов, например, GetWindowText). Разработчики библиотеки сокетов несколько отошли от этих правил: имена всех стандартных сокетных функций пишутся в нижнем регистре. К счастью, мы программируем не на С, а на Паскале, нечувствительном к регистру символов, поэтому будем писать все идентификаторы в виде, наиболее удобном для чтения, т.е. в смешанном регистре.
23 февраля 2009 | Borland Delphi | Alex | | 2873
 


Общие сведения о сокетах
Сокетом (от англ. socket - гнездо, розетка) называется специальный объект, создаваемый для отправки и получения данных через сеть. Отметим, что под термином "объект" в данном случае подразумевается не объект в терминах объектно-ориентированного программирования, а некоторая сущность, внутренняя структура которой скрыта от нас, поэтому с этой сущностью мы можем оперировать только как с единым и неделимым (атомарным) объектом. Этот объект создаётся внутри библиотеки сокетов, а программист, использующий эту библиотеку, получает уникальный номер (дескриптор) этого сокета. Конкретное значение этого дескриптора не несёт для программиста никакой полезной информации и может быть использовано только для того, чтобы при вызове функции из библиотеки сокетов указать, с каким сокетом требуется выполнить операцию.
23 февраля 2009 | Borland Delphi | Alex | | 3128
 


Создание сокета
До сих пор мы обсуждали только теоретические аспекты использования сокетов. С этого раздела начинается практическая часть статьи: будут рассматриваться конкретные функции, позволяющие осуществлять те или иные операции с сокетами. Эти функции экспортируются системной библиотекой wsock32.dll (а также библиотекой ws2_32.dll; взаимоотношение этих библиотек будет обсуждаться в следующей статье цикла), для их использования в Delphi в раздел uses нужно добавить стандартный модуль WinSock. Я не буду приводить здесь исчерпывающего описания функций, так как лучше, чем это сделано в MSDN'е, мне не написать, но буду давать описание, достаточно полное для понимания назначения функции, а также обращать внимание на некоторые моменты, которые в MSDN'е найти трудно. Поэтому я настоятельно рекомендую в дополнение к этой статье внимательно прочитать то, что написано в MSDN'е о каждой из упомянутых мною функций.
23 февраля 2009 | Borland Delphi | Alex | | 5033
 


Протокол TCP
Протокол TCP (Transmission Control Protocol - протокол управления передачей) является надёжным потоковым протоколом с соединением, т.е. полной противоположностью UDP. Единственное, что у этих протоколов общее - это способ адресации: в TCP каждому сокету также назначается уникальный номер порта. Уникальность номера порта требуется только в пределах протокола: два сокета могут использовать одинаковые номера портов, если один из них работает через TCP, а другой - через UDP.
23 февраля 2009 | Borland Delphi | Alex | | 5554
 


Протокол UDP
Протокол UDP (User Datagram Protocol - протокол пользовательских дейтаграмм) используется реже, чем его "одноклассник" TCP, но он проще для понимания, поэтому мы начнём изучение транспортных протоколов с него. Коротко UDP можно описать как ненадёжный протокол без соединения, основанный на дейтаграммах. Теперь рассмотрим каждую из этих характеристик подробнее.
23 февраля 2009 | Borland Delphi | Alex | | 7666
 


Стек TCP/IP
Физический и канальный уровень полностью реализуются сетевой картой (или модемом, или другим устройством, выполняющим ту же функцию) и её драйвером. Здесь действительно достигнута настолько полная абстракция, что программист обычно не задумывается о том, какая используется сеть. Поэтому мы также не будем в данной работе останавливаться на этих двух уровнях.
23 февраля 2009 | Borland Delphi | Alex | | 4279
 


Сетевые протоколы. Семиуровневая модель OSI
Сетевым протоколом называется набор соглашений, следование которым позволяет обеим сторонам одинаково интерпретировать принимаемые и отправляемые данные. Сетевой протокол можно сравнить с языком: два человека понимают друг друга тогда, когда говорят на одном языке. Причём если два человека, говорящих на похожих, но немного разных языках, всё же могут понимать друг друга, то два компьютера для нормального обмена данными должны поддерживать в точности одинаковый протокол.
23 февраля 2009 | Borland Delphi | Alex | | 4499
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | 23 февраля 2009. Регион сайта: Москва и Санкт-Петербург