SFML и C++ Уроки \ Разработка игр › Форумы › SFML Network › TCP для нескольких
В этой теме 4 ответа, 3 участника, последнее обновление Fedor 6 года/лет, 9 мес. назад.
-
АвторСообщения
-
Доброго времени суток. Ворошил форум в поисках решения такой задачи: подключение и работа нескольких клиентов с одним сервером одновременно. Нашёл что-то похожее, но всё же не то. Зашёл на оф.сайт сфмл, но честно говоря мало что понял, только что нужно использовать SocketSelector и не более, прошу помощи знатоков…
Как писали на оф сайте SocketSelector может хранить только ссылки на сокеты. А вобще банально в частях кода где нужно отправить/принять информацию извне проходись циклом по всем сокетам в списке
В каком списке? В векторе или листе? Если да, то как туда добавить этот самый сокет. Всё как-то очень поверхностно, можно пожалуйста кусочек кода как допустим сервер принимает сообщения и выводит их?
Поищи в гугле. Я так и не взялся за sfml-network конкретно и перешёл на Lidgren.Network(C#).
В силу некоторых обстоятельств я использовал контейнер map где ключем был ip адресс в формате string (да да тупо, так не делают это было дано и не правда, но работало), а значение хранимое объект Unit в котором есть sf:IpAddress и порт unsigned short port
далее логика проста снимаю блокинг порта и просматриваю в буфере новые подключение, если ip уже есть значить данные обновляются если нет то новый игрок
C++12345678910111213UdpSocket socket; // 127.0.0.1socket.setBlocking(false);// кодmap <string, Unit> indetificator; // 13.03.2015// код// в цикле чекаем поступающие данные (вроде буфером идут)socket.receive(data, sizeof(data), out, getIp, getPort);string adress = getIp.toString()+ToString(getPort);// какие то действия// массовая рассылка данныхfor (auto it = indetificator.begin(); it != indetificator.end(); it++){socket.send(packet, (*it).second.ip, (*it).second.port);}И да у меня UDP протокол, но я думаю тебе не важно)
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.