Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 20:49   #1
pavelslap
Пользователь
 
Регистрация: 08.02.2009
Сообщений: 73
Вопрос Чат клиент-сервер

Здравствуйте. Я решил сделать небольшой чат Клиент-Сервер.
Я нашёл код в интернете, но не понимаю как его преобразовать так, чтобы он мог отправлять сообщения, напечатанные вручную и принимал их и записывал в textfield в форму.
Можете ли подсказать или дать пример?

Сервер:
Код:
<?php
    header('Content-Type: text/plain;');
    error_reporting(E_ALL ^ E_WARNING);
    set_time_limit(0);
    ob_implicit_flush();
   
    echo "-= Server =-\n\n";

    $address = 'localhost';
    $port    = 10001;

    try {
   
        echo 'Create socket ... ';
        if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
            throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
        } else {
            echo "OK\n";
        }

        echo 'Bind socket ... ';
        if (($ret = socket_bind($sock, $address, $port)) < 0) {
            throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
        } else {
            echo "OK\n";
        }

        echo 'Listen socket ... ';
        if (($ret = socket_listen($sock, 5)) < 0) {
            throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
        } else {
            echo "OK\n";
        }

        do {
            echo 'Accept socket ... ';
            if (($msgsock = socket_accept($sock)) < 0) {
                throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
            } else {
                echo "OK\n";
            }
           
            $msg = "Hello, Client!";
            echo "Say to client ($msg) ... ";
            socket_write($msgsock, $msg, strlen($msg));
            echo "OK\n";

            do {
           
                echo 'Client said: ';
                if (false === ($buf = socket_read($msgsock, 1024))) {
                    throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
                } else {
                    echo $buf."\n";
                }
               
                if (!$buf = trim($buf)) {
                    continue;
                }
               
                if ($buf == 'shutdown') {
                    socket_close($msgsock);
                    break 2;
                }
               
                echo "Say to client ($buf) ... ";
                socket_write($msgsock, $buf, strlen($buf));
                echo "OK\n";
               
            } while (true);
           
        } while (true);

    } catch (Exception $e) {
        echo "\nError: ".$e->getMessage();
    }
   
    if (isset($sock)) {
   
        echo 'Close socket ... ';
        socket_close($sock);
        echo "OK\n";
   
    }
?>
Клиент:
Код:
<?php
    header('Content-Type: text/plain;');
    error_reporting(E_ALL ^ E_WARNING);
    set_time_limit(0);
    ob_implicit_flush();
   
    echo "-= Client =-\n\n";

    $address = 'localhost';
    $port    = 10001;

    try {
   
        echo 'Create socket ... ';
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket < 0) {
            throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
        } else {
            echo "OK\n";
        }

        echo 'Connect socket ... ';
        $result = socket_connect($socket, $address, $port);
        if ($result === false) {
            throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
        } else {
            echo "OK\n";
        }

        echo 'Server said: ';
        $out = socket_read($socket, 1024);
        echo $out."\n";
       
        $msg = "Hello, Server!";
        echo "Say to server ($msg) ...";
        socket_write($socket, $msg, strlen($msg));
        echo "OK\n";
       
        echo 'Server said: ';
        $out = socket_read($socket, 1024);
        echo $out."\n";
       
        $msg = 'shutdown';
        echo "Say to server ($msg) ... ";
        socket_write($socket, $msg, strlen($msg));
        echo "OK\n";
       
    } catch (Exception $e) {
        echo "\nError: ".$e->getMessage();
    }
   
    if (isset($socket)) {
   
        echo 'Close socket ... ';
        socket_close($socket);
        echo "OK\n";
       
    }
?>
pavelslap вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клиент-сервер чат djetx Работа с сетью в Delphi 8 12.10.2010 20:37
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
мини Чат клиент сервер borN_free Общие вопросы .NET 1 19.03.2010 22:31
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18