![]() |
Создание клиент-серверных приложений с примерами на языке php. Клиент-сокеты.Статья 1
Создание клиент-серверных приложений с примерами на языке php.
Часть #1. Клиент-сокеты. Статья #1. +Отсебятина (слово от автора) Целью данных статей является разложение «по-полочкам» идей и реализации клиент-серверных приложений с примерами на языке php. Эта статья, прежде всего адресована новичкам. Собственно, почему я решил её написать: в своё время самому было сложно разобраться в этой проблеме и, тем более, найти полезную информацию. Собственно пробел в этой информации я и постараюсь заполнить. +Запуск шатла…(Введение в тему) Для начала я проясню, что такое клиет-серверные предложения и для чего вам может пригодиться эта статья. Клиент-серверные приложения-это, грубо говоря, 2 программы: одна-клиент, другая-сервер, причём они могут меняться местами. Рассмотрим отношение клиент-сервер на нескольких упрощённых примерах: 1)Вы набираете в браузере адрес http://microsoft.com и что происходит? Сначала браузер отсылает запрос вашему провайдеру, после чего провайдер отсылает копию этого запроса серверу microsoft.com, который возвращает ответ. Ответ проходит через провайдера и доходит до браузера, который его и обрабатывает. Выглядит это следующим образом: Браузер (клиент)->провайдер(сервер, клиент)->Microsoft.com(сервер) Microsoft.com(сервер)-> ваш провайдер(сервер, клиент)-> Браузер (клиент) Как можно заметить, провайдер выполняет двойственную роль-он и принимает данные и отправляет их. 2)Вы общаетесь в icq, отправляете сообщение на номер 111111(ваш номер-222222). Итак, ваш icq-клиент отправляет запрос серверу icq (который, как и в предыдущем примере, проходит через провайдера), который передаёт его вашему собеседнику и получает данные о том, принял ли пользователь сообщение. Icq[222222] (клиент)->провайдер (сервер, клиент)->ICQ[сервер](сервер)->icq[111111] (клиент) Как мы видим, здесь у нас уже 2 сервера и 2 клиента 3)Спам рассылка Итак, вы спамер Вы, собрав базу для спама, отправляете сообщения через ОДИН SMTP сервер какого-то идиотского буржуйного фри-хостинга : 1)Вы(клиент)->SMTP сервер[HELO,авторизация, сообщение] (сервер) *Эти действия проходят ровно столько раз сколько мессаг 2)Юзер(клиент)-> провайдер (сервер, клиент)->POP3/IMAP/ну или другой сервер[авторизация, запрос количества сообщений, приём сообщений] (сервер) Эти действия проходят ровно столько раз сколько мессаг на сервере: Юзер[запрос сообщения] (клиент)-> провайдер (сервер, клиент)->POP3/IMAP/ну или другой сервер [сообщение] (сервер) ->провайдер юзера (сервер, клиент)->юзер(клиент) По всем примерам хочу заметить, что и сервер общается через провайдера, провайдер(скорее всего) имеет несколько сервером ну и тд.… Итак, надеюсь по примерам вы поняли что такое сервер и что такое клиент, если не поняли, то объясню коротко: клиент-это тот кому нужна информция, сервер-это тот кто её даёт. Андерстенд? Ну поехали дальше…. +Шатл забыли заправить бензином(продолжение введения в тему) Итак, в этой первой статье я начну разговор о клиентских приложениях. Что это может быть? Например, браузер, icq-клиент, грабер новостей ФК «Динамо», банальный спамер и… в общем всего не пересчитать. Ну что ж, я желаю вам успехов, приступим к изучению этой интересной темы. +Неужели полетели? (разбор клиент-сокетных функций php) В языке php не так-то много клиент-сокетных функций, но все они способны удовлетворить любые нужды. 1)Fsockopen($server,$port,$errno,$errstr,$timeout). Эта функция, подобно fopen(), возвращает дескриптор сессии. Теперь рассмотрим каждый параметр отдельно: $server-сервер, к которому следует подключиться $port-порт, к которому следует подключиться $errno-переменная, в которую будут сохраняться числовые идентификаторы ошибок $errstr-переменная, в которую будут сохраняться описания ошибок $timeout-время в секундах, за которое сервер должен подключиться, если не будет укладываться во время, то возвратит ошибку. Данная функция выполняет подключение к серверу, например код: PHP код:
2)fputs($connect,$what); С этой функцией вы уже должны быть знакомы по работе с файлами, тут же ситуация такая же: эта функция передаёт данные $what серверу, к которому был подключен дескриптор $connect. 3)fgets($connect,[длина строки]) Эта функция принимает ответ от сервера, к которому вы подключились. Второй параметр, указывающий на то, какой максимальной длины может быть строка, не обязателен. 4)fclose($connect); Эта функция вам тоже знакома: она «отсоединяет» вас от сервера, указанного в дескрипторе $connect. Таким образом, подключившись к серверу можно с ним общаться как с файлом с одной лишь разницей – общение сервера и клиента можно считать двусторонним, а общение с файлом - односторонним. В следующей статье мы рассмотрим применение полученных данных на практике - в работе с http и smtp серверами. Все комментарии принимаются и обязательно повлияют на новую статью. Удачи. [rap-kasta] |
Оформление хорошее, но сама статья очень маленькая (не по размеру, а по несению информации), по сути - разбор 4-х функций, про которые итак все знают из документации. Если уж тон статья задан как расжёвывательский для маленьких, то нужно писать побольше. Вот сейчас горели страсти по поводу потоков в php, тоже стоит отметить с примером реализации и тп.
|
а как быть если php.ini:
disable functions = fsockopen, pfsockopen, tp_connect, ftp_ssl_connect, socket_create, socket_connect, socket_bind, socket_listen, socket_write, socket_send, socket_sendto существуют другие реализации? |
curl ещё есть.
|
Цитата:
semmes +1 |
А где поподробнее почитать можно?
|
в гугле ((*
2тс как ты планируешь написать серверное приложение на РНР? |
паумничаю =)))
Цитата:
соединение обрывается, клиентское становиться серверным а серверное клиентским? жестоко пойми ты серверное приложение не то которое данные только отдает, оно и принимать может. и клиентское тоже. Цитата:
Цитата:
Цитата:
Цитата:
за старание конечно плюс но ты наверно понятия не имееш о маршрутиризации сетей :rolleyes: не в обиду. Цитата:
|
да и еще по поводу ф-ции
fputs, fgets fputs записивает данные в файл, декскриптор которого дан функции как первый параметр. в этом случае кончено можно сказать что функция передает данные серверу. но хорошо бы было если бы автор написал более подробно обо всем. относительно статьи самой. в ней много ошибок (имхо). все таки если статья для новичков то лучше было бы если бы все нормально описалось бы. с нормальными примерами. новичкам это мало чего полезного даст (опять таки имхо) |
Цитата:
ЗЫ Статья будет удалена, если через 3 дня не будет дополнена и отредактирована ТС по причине нулевой ценности. Цитата:
|
| Время: 18:14 |