select() ругается

Discussion in 'WASM.NETWORKS' started by s3dworld, Sep 19, 2011.

  1. s3dworld

    s3dworld Сергей

    Blog Posts:
    0
    Joined:
    Mar 16, 2010
    Messages:
    387
    Location:
    Ртищево
    Всем доброго вечера!

    Делаю вот так:

    Code (Text):
    1. FD_ZERO(&fdsRead);
    2. FD_ZERO(&fdsWrite);
    3. FD_SET(listener,&fdsRead);
    4.  
    5. for(playerIndex=0;playerIndex<players.size();playerIndex++)
    6. {
    7.     FD_SET(players[playerIndex].entitySocket,&fdsRead);
    8.     FD_SET(players[playerIndex].entitySocket,&fdsWrite);
    9. }
    10.  
    11. selectResult=select(0,&fdsRead,&fdsWrite,0,&timeValue);
    Когда нет клиентов, то есть выполняется только для слушающего сокета listener, то ошибок нет. Вот подключился клиент и уже его сокет берётся из players. Функция select() возвращает ошибку, что я пытаюсь выполнить операцию не над сокетом. Проверяю в режиме отладки. accept() возвращает тот же номер сокета, что я ложу в fdsRead с fdsWrite. Тогда в чём же дело?
     
  2. s3dworld

    s3dworld Сергей

    Blog Posts:
    0
    Joined:
    Mar 16, 2010
    Messages:
    387
    Location:
    Ртищево
    Разобрался сам. Получалось что добавление нового экземпляра в вектор, вызывался конструктор копирования и после срабатывал деструктор, в котором вызывалось closesocket().
     
  3. Smile

    Smile New Member

    Blog Posts:
    0
    Joined:
    Jul 28, 2004
    Messages:
    129
    вектор+хранение по значению = меняюшиеся индексы, битые указатели, боль...

    Лучше сразу отдели игровую логику от сетевой части и свяжи через идентификаторы.
    Вектор замени на map<ID,Player*>, будешь по id сообшения не только от сети получать но и от других подсистем.

    Вообше, для игры использовать tcp не тру, если конечно ты не пошаговую пишешь или поинтклик ... омеге ты пишешь мморпг ? )))
     
  4. s3dworld

    s3dworld Сергей

    Blog Posts:
    0
    Joined:
    Mar 16, 2010
    Messages:
    387
    Location:
    Ртищево
    Smile
    Платформер, сетевой Марио.
     
  5. Smile

    Smile New Member

    Blog Posts:
    0
    Joined:
    Jul 28, 2004
    Messages:
    129
    О, круто, гл.

    По лану должно нормально быть