@alexey_abramov

Как эффективно тестировать клиент-серверные приложения написанные на Qt на одной машине?

Здравствуйте.
Создаю клиент-серверное приложение на Qt, обмен идет через TCP. Онлайн игра.
Все данные посылаются на QTcpSocket подключившихся клиентов.
Собственно говоря, если запускать приложение 2 раза на одном компьютере, чтобы протестировать 2 клиента, данные будут посылаться лишь в 1 клиентское приложение. Т.к. QTcpSocket одинаковый.
Возможно ли запускать приложения, не используя виртуальные машины, чтобы у 2 приложений значение QTcpSocket было разное? Через какую-то настройку винды/линукса(особо нет разницы на чем тестировать, лишь бы на 1 компьютере)? А то слишком временно затратно делать по другому.
  • Вопрос задан
  • 890 просмотров
Решения вопроса 1
обмен идет через UDP

QTcpSocket

Непонятно, что из этого выбрать.

Не совсем понял смысл выражения "значение QTcpSocket", но с точки зрения протокола IP, операционная система при стандартном способе привязки сокетов будет иденфтицировать сокет (и соответствующее приложение) по паре (IP адрес; порт). Если вы все-таки используете UDP и соответствующий тип сокетов, то вы так или иначе решаете задачу подключения нескольких клиентов к серверу (в случае TCP это делал бы для вас QTcpServer). В зависимости от выбранной вами модели управления, клиенты либо используют фиксированный UDP порт и посылают дейтаграммы с некоторого IP-адреса и этого порта, сюда же ожидая ответ от сервера, либо выбирают случайный свободный UDP-порт.
В первом случае сложно называть клиентов "клиентами", т.к. они также висят на фиксированном порту и с точки зрения сети равноправны с сервером. Чтобы протестировать этот случай, можете попробовать добавить дополнительные IP-адреса вашей машине, и привязываться разными "клиентами" на разные адреса, чтобы пара (адрес, порт) была уникальной.
А во втором случае проблем быть не должно, если порт выбирается случайным образом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы