Topkoder Дата: Четверг, 25 Июля 2013, 14:22 | Сообщение # 1
частый гость
Сейчас нет на сайте
Решил сначала потренироваться на GM. Вот код клиента:
Код
global.MyLogin = get_string("Введите логин",""); sockId = dll39_tcp_connect("127.0.0.1",10002,0); if (!sockId) { show_message("Ошибка подключения к серверу"); } else { dll39_set_format(sockId,dll39_format_text,chr(13) + chr(10)); newLine = chr(13) + chr(10); dll39_buffer_clear(0); msg = "00001" + global.MyLogin; dll39_write_chars(msg + newLine,0); dll39_message_send(sockId,"127.0.0.1",0,0); dll39_socket_close(sockId); }
Просто подключается к серверу и отправляет логин. Вот код php сервера (найдено в просторах интернета):
Код
<?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 = 10002; 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"; } ?>
Вот результат выполнения сервера (после запуска программы)
Код
-= Server =- Create socket ... OK Bind socket ... OK Listen socket ... OK Accept socket ... OK Say to client (Hello, Client!) ... OK Client said: 00001Topkoder Say to client (00001Topkoder) ... OK Client said: Client said: Client said: Client said: Client said: Client said: Client said: Client said: Error: socket_read() failed: ��������� �� ����� ����-���������� ��������� ������������� �����������. Close socket ... OK
Почему от клиента столько пустых запросов?
Сообщение отредактировал Topkoder - Суббота, 27 Июля 2013, 02:01
staconik Дата: Четверг, 25 Июля 2013, 15:03 | Сообщение # 2
участник
Сейчас нет на сайте
Для начала раскажи что за игра!
yarickyarick Дата: Четверг, 25 Июля 2013, 15:13 | Сообщение # 3
Маленький лицемер
Сейчас нет на сайте
При входе клиент посылает на сервер свои данные, для проверки онлайн ли клиент можете посылать по 1 пакету каждые 30 секунд, если ответ пришел на сервер от клиента, значит онлайн, если нет значит оффлайн. Все данные PHP + SQL записывает в БД. Вот тебе вся логика. Начинай с самого клиента, после делаешь сервер и посылаешь на него запросы, пробуешь с сервера посылать пакеты и через клиент отвечать.
anton-gar Дата: Четверг, 25 Июля 2013, 15:38 | Сообщение # 4
WEBmaster
Сейчас нет на сайте
Цитата (Topkoder )
Может мне кто-то объяснить логику написания? С чего начать?
Смотри в сторону sql + php + дройд. Шлёшь запросы с андройда к ПХП скрипту, который в свою очередь обрабатывает иобращается к базе.