Skip to content

CplusplusTasks/Tic-tac-toe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tic-tac-toe

Сетевая игра крестики нолики. Запускается сервер, после к нему могут подключаться игроки через браузер.

Для запуска сервера ./run.sh address port (by default 127.0.0.1 7777), после сервер будет принимать соединения по адрессу address и порту port.

run.sh clean - удаляет собранный проект

Подключение игроков осуществляется через браузер введя в адрессную строку address:port.

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

http://sorokin.github.io/cpp-year2013/task-course-work.html

Курсовик за 2 семестр

В данном задании предлагается на выбор реализовать программу, использующую для работы с сетью BSD-сокеты и реализующую один из популярных интернет протоколов. Примеры допустимых программ:

Допускается написание других программ, но это необходимо предварительно согласовать со мной.

Набор требований/нетребований к реализации:

  • Асинхронное выгребание событий от сокетов: epoll[1] [2](Linux), I/O completion ports[3] (Windows), kqueue[4] (FreeBSD)
  • Программа должна реагировать на посылаемые ей SIGINT, SIGTERM и gracefully выходить. Именно не киляться, а выходить. Под словом выходить понимается выходить из функции main.
  • Нельзя использовать библиотеки для работы с сокетами, кроме BSD-sockets.
  • Нельзя использовать библиотеки, реализующие интернет протоколы.
  • Для вещей не связанных с сетью, сторонние библиотеки использовать можно.

Предполагается, что разрабатываемую программу условно можно разделить на 3 части:

  1. Некоторая обертка над сокетами/epoll'ом, которая реализует TCP и ничего не знает про протокол вышележащего уровня.
  2. Реализация соответствующего интернет протокола, например HTTP, использующая 1 и ничего не знающая про прикладную логику.
  3. Прикладная логика, использующая 2.

    Утверждается, что если программу нельзя будет легко разделить на эти 3 части, то её код это жуткая лапша. Возможно для некоторых программ это не так, надо смотреть на конкретном примере. Но есть шанс, что это так. Поэтому вам предлагается сразу писать программу разделяя её на эти три части: две библиотеки и сама программа.

    Интерфейс части 1 может быть произвольным, но вы можете черпать вдохновение глядя на существующие библиотеки, например QTcpServer[5], QTcpSocket[6]. Аналогично для части 2: QNetworkAccessManager[7].

    <h3>Сроки</h3>
    
      <li>Работающую часть <a href="#part_1">1</a> необходимо показать 27 ноября.</li>
      <li>Работающую часть <a href="#part_2">2</a> необходимо показать 11 декабря.</li>
      <li>Работающую программу необходимо показать на зачетной неделе.</li>
    
    
    <h3>Ссылки</h3>
    <ol>
      <li id="cite_note_1"><b><a href="#cite_ref_1">^</a></b> <a href="http://linux.die.net/man/4/epoll">man 4 epoll</a></li>
      <li id="cite_note_2"><b><a href="#cite_ref_2">^</a></b> <a href="http://linux.die.net/man/7/epoll">man 7 epoll</a></li>
      <li id="cite_note_3"><b><a href="#cite_ref_3">^</a></b> <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa365198(v=vs.85).aspx">I/O Completion Ports</a></li>
      <li id="cite_note_4"><b><a href="#cite_ref_4">^</a></b> <a href="http://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2">man 2 kqueue</a></li>
      <li id="cite_note_5"><b><a href="#cite_ref_5">^</a></b> <a href="http://qt-project.org/doc/qt-5/qtcpserver.html">QTcpServer Class</a></li>
      <li id="cite_note_6"><b><a href="#cite_ref_6">^</a></b> <a href="http://qt-project.org/doc/qt-5/qtcpsocket.html">QTcpSocket Class</a></li>
      <li id="cite_note_7"><b><a href="#cite_ref_7">^</a></b> <a href="http://qt-project.org/doc/qt-5/qnetworkaccessmanager.html">QNetworkAccessManager Class</a></li>
    </ol>
    
    <p>
    
    </p></ul>
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published