SFML и C++ Уроки \ Разработка игр › Форумы › SFML Network › TCP для нескольких › Ответ в теме: TCP для нескольких
В силу некоторых обстоятельств я использовал контейнер map где ключем был ip адресс в формате string (да да тупо, так не делают это было дано и не правда, но работало), а значение хранимое объект Unit в котором есть sf:IpAddress и порт unsigned short port
далее логика проста снимаю блокинг порта и просматриваю в буфере новые подключение, если ip уже есть значить данные обновляются если нет то новый игрок
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 |
UdpSocket socket; // 127.0.0.1 socket.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 протокол, но я думаю тебе не важно)