marsermd / RUDP

Reliable protocol over UDP, project for IFMO course: Operating Systems

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Нужно написать альтернативу классу Socket, которая бы позволяла протестировать работу сетевого протокола.

marsermd opened this issue · comments

При разработке сетевого протокола очень важно уметь его протестировать, проверить корректность работы каждой фичи.
Для этого нужно подменять системные сокеты, связанные через реальное интернет соединение, на альтернативную реализацию, работающую через наше фейковое соединение.

В минимальной версии нужно уметь создавать два фальшивых сокета, чтобы они общались друг с другом по нашему интернет соединению. При этом в соединении должна быть возможность настроить задержку и процент потерянных пакетов.

Для этого требуется написать альтернативную реализацию текущим Socket:

  1. Вынести сигнатуры в интерфейс(абстрактный класс) SocketBase
  2. Унаследовать текущую реализацию Socket от него
  3. Написать реализацию FakeSocket

В реализации FakeSocket необходимо:
Симулировать соединение между сокетами, запущенными в одной программе.
Настраиваемые параметры: время задержки, вероятность пропадания пакета.