Од свих компоненти које Делпхи пружа подршку за апликације које размјењују податке путем мреже (интернета, интранета и локалне мреже), а двије су најчешће ТСерверСоцкет и ТЦлиентСоцкет, обје су дизајниране да подрже функције читања и писања преко ТЦП / ИП везе.
Компоненте утичница Винсоцк и Делпхи
Виндовс Соцкетс (Винсоцк) нуди отворени интерфејс за мрежно програмирање у оквиру Виндовс оперативног система. Нуди скуп функција, структура података и сродних параметара потребних за приступ мрежним сервисима било које групе протокола. Винсоцк делује као веза између мрежних апликација и основних протокола.
Компоненте Делпхи соцкет-а (врапперс за Винсоцк) поједностављују креирање апликација које комуницирају с другим системима користећи ТЦП / ИП и повезане протоколе. Помоћу утичница можете читати и писати преко других машина без бриге о детаљима основног мрежног софтвера.
Интернетска палета на алатној траци компоненти Делпхи домаћин је ТСерверСоцкет и ТЦлиентСоцкет као и компоненте ТцпЦлиент, ТцпСервер, и ТУдпСоцкет.
Да бисте покренули соцкет везу користећи компоненту соцкет, морате одредити хост и порт. Генерално, домаћин одређује псеудоним за ИП адресу послужитељског система; Лука специфицира ИД број који идентифицира везу соцкет послужитеља.
Једноставан једносмјерни програм за слање текста
Да бисте направили једноставан пример користећи компоненте соцкет-а које пружа Делпхи, направите два обрасца - један за сервер и један за рачунар клијента. Идеја је омогућити клијентима да пошаљу неке текстуалне податке серверу.
За почетак отворите Делпхи два пута, креирајући један пројекат за сервер апликацију и један за клијента.
Сиде Сервер:
У образац уметните једну ТСерверСоцкет компоненту и једну ТМемо компоненту. У ОнЦреате догађај за образац додајте следећи код:
процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
започети
СерверСоцкет1.Порт: = 23;
СерверСоцкет1.Ацтиве: = Тачно;
крај;
Тхе ОнЦлосе догађај треба да садржи:
процедура ТФорм1.ФормЦлосе
(Пошиљалац: ТОбјецт; вар Акција: ТЦлосеАцтион);
започети
СерверСоцкет1.Ацтиве: = фалсе;
крај;
Страна клијента:
За клијентску апликацију, облику додајте компоненту ТЦлиентСоцкет, ТЕдит и ТБуттон. Унесите следећи код за клијента:
процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
започети
ЦлиентСоцкет1.Порт: = 23;
// локална ТЦП / ИП адреса сервера
ЦлиентСоцкет1.Хост: = '192.168.167.12';
ЦлиентСоцкет1.Ацтиве: = тачно;
крај;
процедура ТФорм1.ФормЦлосе (Пошиљалац: ТОбјецт; вар Акција: ТЦлосеАцтион);
започети
ЦлиентСоцкет1.Ацтиве: = фалсе;
крај;
процедура ТФорм1.Буттон1Цлицк (Пошиљалац: ТОбјецт);
бегиниф ЦлиентСоцкет1.Ацтиве онда
ЦлиентСоцкет1.Соцкет. СендТект (Едит1.Тект);
крај;
Код прилично описује себе: када клијент кликне на дугме, текст наведен унутар компоненте Едит1 биће послан серверу са одређеним портом и адресом хоста.
Повратак на сервер:
Коначни додир у овом узорку је пружање функције за сервер да „види“ податке које клијент шаље. Догађај који нас занима је ОнЦлиентРеад - догађа се када сервер соцкет треба да прочита информације из клијентове утичнице.
процедура ТФорм1.СерверСоцкет1ЦлиентРеад (Пошиљалац: ТОбјецт;
Соцкет: ТЦустомВинСоцкет);
започети
Мемо1.Линес. Додај (Соцкет). РецеивеТект);
крај;
Када више клијената пошаље податке на сервер, требат ће вам мало више за кодирање:
процедура ТФорм1.СерверСоцкет1ЦлиентРеад (Пошиљалац: ТОбјецт;
Соцкет: ТЦустомВинСоцкет);
вар
и: цели број;
сРец: низ;
бегинфор и: = 0 до СерверСоцкет1.Соцкет. АцтивеЦоннецтионс-1 добегинвитх СерверСоцкет1.Соцкет. Везе [и] добегин
сРец: = РецеивеТект;
ако сРецр '' тхенбегин
Мемо1.Линес. Додај (РемотеАддресс + 'шаље:');
Мемо1.Линес. Додај (сРецр);
крај;
крај;
крај;
крај;
Када сервер прочита информације из клијентске утичнице, тај текст додаје компоненти Мемо; додају се и текст и клијент РемотеАддресс, тако да ћете знати који је клијент послао информације. У софистициранијим имплементацијама, надимци за познате ИП адресе могу послужити као замјена.
За сложенији пројекат који користи ове компоненте истражите Делпхи> Демос> Интернет> Цхат пројекат. То је једноставна апликација за мрежни цхат која користи један образац (пројекат) и за сервер и за клијента.