Sockets Client в PHP
В предишна статия говорих за това как да създадете сървър в PHP. Сизползване на сокети създадохме сървър в PHP. И в тази статия ще напишемклиент на PHP, който ще изпрати заявка до сървъра и ще получи отговор от него.
Етоклиентския код в PHP:
Сега имате минимален набор от знания за работа със сокети, но като цяло темата е много интересна, така че можете да я изучите по-подробно. Можете да създавате много сложни клиент-сървър приложения, към които винаги можете да се свържете и да изпращате различни заявки, които сървърът ще обработва.
Добавете ме като приятелVKontakte: http://vk.com/myrusakov. Ако искате да оцените мен и работата ми, напишете го в моята група: http://vk.com/rusakovmy.
Препоръчайте тази статия на вашите приятели:
Ако харесвате сайта, поставете връзка към него (на вашия сайт, във форума, в контакт):
Тя изглежда така:
Коментари ( 9 ):
Майкъл, провери ли самия си клиентски скрипт спрямо сървъра? Ето примерен ред $result = socket_connect($socket, $address, $port); как трябва да се свърже, ако няма променлива $socket, но има $sock. Или греша? =)
Майкъл, здравей. Никога не съм имал работа със сокет, кое е най-доброто място да започна? Имам нужда от скрипта, за да изтегля информация от сървъра на играта и да я изведа във формат, който разбирам. ето един пример. http://narod.ru/disk/61234356001.1422047c71b5cae33ed0f7a891da12b5/inv.php.html
За да започнете с пример в статията и разберете. Друг е въпросът как точно да се реализира това за игровия сървър.
Добър ден Не го разбирам съвсем. Вашият пример работи само когато "Сървър" и "клиент" се изпълняват в браузър, в противен случай се казва "Създадено гнездоПредупреждение: socket_connect() [function.socket-connect]: не може да се свърже [0]: Връзката е неуспешна, защото целевият компютър отказва заявката за връзка. вZ:\home\localhost\www\testim\test_soces\client.phpна ред16връзка към сокетПредупреждение: socket_read() [function.socket-read]: не може да се чете от сокет [0]: Заявка за изпращане или получаване на данни (при изпращане на сокет за дейтаграма чрез повикване sendto) не е предоставен адрес. : 29Предупреждение: socket_write() [function.socket-write]: не може да се пише на socket [0]: Заявка за изпращане или получаване на данни (при изпращане на сокет за дейтаграма чрез повикване sendto) не беше предоставен адрес.inZ:\home\localhost\www\testim\test_soces\client.phpна ред26
Предупреждение: socket_read() [function.socket-read]: не може да се чете от сокет [0]: Заявка за изпращане или получаване на данни (при изпращане на сокет за дейтаграма чрез повикване sendto) не беше предоставен адрес. вZ:\home\localhost\www\testim\test_soces\client.phpна ред27Съобщение от сървър: . Съобщение до сървъра: изходПредупреждение: socket_write() [function.socket-write]: не може да се записва в сокет [0]: Заявка за изпращане или получаване на данни (когато се изпраща в сокет за дейтаграма чрез повикване sendto) не беше предоставен адрес. вZ:\home\localhost\www\testim\test_soces\client.phpна линия31Връзката е завършена. Гнездото е затворено успешно" Бихте ли могли да опишете какво не е наред или трябва да бъде!Не разбирам защо им трябват тези "сокети"
Не се свързва, може би сървърът не е направен да има къде да се свързва.
Изглежда, че сте направили всичко както трябва! Ако файлът "server.php" е отворен в браузъра, тогава всичко работи добре, но само веднъж. Какво може да се направи? Изглежда, че всичко е настроено както трябва.
Майкъл, здравей. Запазих кода на сървъра и кода на клиента, след което отворих раздел в браузъра, през който стартирах кода на сървъра, и след това стартирах кода на клиента и всичко работи добре, но по някаква причина само веднъж, ако стартирате кода на клиента още веднъж, тогава грешките „socket_connect(): не може да се свърже [10061]: Не може да се осъществи връзка, защото целевата машина активно я отказа.“ Опитах се да не затварям връзката както на сървъра, така и на клиента, кодът не работи или по-скоро грешките се изкачват отново. Как мога да стартирам сървъра, за да имам достъп до него по всяко време? При достъп до сървър чрез HTML5 уебсокет, трябва ли сървърът да изпраща заглавки, че поддържа сокети? И в коя част на кода трябва да бъдат изпратени? Благодаря ви много предварително за отговорите!
Уважаеми администратори, моля, отговорете на двата предишни коментара защо работи нормално само веднъж. МЕРСИ.