tyman

Созданные ответы форума

Просмотр 15 сообщений - с 1 по 15 (из 23 всего)
  • Автор
    Сообщения
  • tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Попробуй чистить пакет.
    packet.clear();

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Он не принимает порт, он принимает переменную куда запишет порт от куда пришло

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Уже увидел

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Ты забыл забиндеть порт.

    if (socket.bind(5400) != sf::Socket::Done) {// error… }

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Тут все правильно, дай больше инфы.

    Проверь соотвецтвие типа данных пакета и сервера айпи

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Да

    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    На c++ sfml. Чем тебя стандартные возможности не устраивают?

    На крайняк php.

    в ответ на: Передача обьекта класса по сети #3196
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Рекомендую почитать туториал: http://www.sfml-dev.org/tutorials/2.3/

    в ответ на: Ряд вопросов #3177
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Значит так. На сервере Был список с пользователями:
    struct user{
    String name;
    int x, y;
    user *next;
    };
    Когда кто то ходил, то на сервер приходил пакет: {
    int state; //Чего хочет клиент: 1-регистрация, 2-ход, 3-ожидание
    String name;//Имя
    char nap;//Направление W, S, A, D
    };

    Если регистрация то сервер проверял имя(на занятость), отправлял размер карты и саму карту;
    Если ход то проверял имя, двигал фигурку(проверяло на стены), отправлял данные назад;
    Если ожидание то отправлял данные;

    Данные которые сервер отправлял назад выглядели:
    Первый пакет содержал количество пользователей;
    А дальше отправлялись имена и координаторы;

    В клиенте всё это добро выставлялось на экран;
    Камера выставлялась на координатах того кто имел клиентское имя;

    в ответ на: Ряд вопросов #3153
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Пинг штука страшная, видно как пакеты теряются на глазах.

    У меня сервер обрабатывал все данные, если ты нажал в лево, то на сервер отправлено букву с направлением, сервер ходил тем персонажем и отправлял положение всех персонажей обратно. Но дело было так:

    Когда подключался к серверу я, все работало как часы.

    Когда подключался второй игрок, то он отставал, мой персонаж бегал быстрее.

    Когда подключался третий, лагало словно из Европы в Китай.

    в ответ на: Ряд вопросов #3138
    +1
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    1. На виртуальных серверах ограниченое количество подключений tcp. Здесь выгодней udp так как не надо резервировать места.

    Ссылка на розетки http://www.sfml-dev.org/tutorials/2.3/network-socket.php

    Начинается с надписи Blocking on a group of sockets

    2. У меня сервер генерировал карту и отправлял клиенту. Нужно передать всю карту, mas[45][45]. Отправлял цыклом, по 45 элементов за передачу. Если масив 46×46 то 46-тая передача не доходила. Клиент знает, что должно прийти 46 писем, по 46 элементов, по этому ждёт, а сервер пишет, что все отправлено. Тут надо быть окуратным.

    в ответ на: Ряд вопросов #3133
    +1
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Я столкнулся с парой проблем.

    1. Если ты отправляешь данные, а клиент не принимает то программа стоит афк.

    2. При передаче матрицы int больше 45×45 последнии строки не передается. Сервер пишет, что отправил, а клиент ждет приема.

     

    В документации были какие-то розетки с таймером ожидания передачи, но я так и не понял как ними пользоваться, по этому оптимальным есть передавать данные тому кто просит, а не всем по списку.

    в ответ на: Ряд вопросов #3130
    +1
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    String не выгодно. Как ты общался используя string? Отправка принимает ip, а не string

    Как узнать отключился ли клиент? Тут поможет таймер, если клиент не обновляет данные других игроков в течении 10 секунд, то клиент умер.

    в ответ на: Ряд вопросов #3123
    +3
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

     

    Список http://www.codenet.ru/progr/cpp/dlist.php

    Пускай когда клиент подключается ты проверяешь ip на наличие в списке.

    Если такой ip есть то обновляешь таймер если нету то добавляешь элемент в список.

    Если таймер закончился то удаляешь элемент

    Проходишь по списку и всем отправляешь нужные данные

    в ответ на: Размер картинок для спрайта #904
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Пробовал 12000 пикселей, не вышло.

Просмотр 15 сообщений - с 1 по 15 (из 23 всего)