{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f2acffb9",
   "metadata": {},
   "source": [
    "# Тест по работе с сетью и сокетами #"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d917f045",
   "metadata": {},
   "source": [
    "##### Вас зовут:\n",
    "___"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f20b25c6",
   "metadata": {},
   "source": [
    "##### 1. Для чего нужны сокеты?\n",
    "\n",
    "- [ ] Для организации взаимодействия процессов, работающих на разных серверах\n",
    "- [ ] Для хранения общих данных нескольких потоков, работающих на одном сервере"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20a320bc",
   "metadata": {},
   "source": [
    "##### 2. Если программа сервер, работающая с сокетом, написана на языке, отличном от python, возможно написать программу клиент на python для отправки данных на сервер?\n",
    "\n",
    "- [ ] Нет\n",
    "- [ ] Да"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2b097b8",
   "metadata": {},
   "source": [
    "##### 3. Отметьте истинные утверждения:\n",
    "\n",
    "- [ ] контекстный менеджер автоматически выполнит вызов метода `close` для открытого сокета\n",
    "- [ ] контекстный менеджер позволяет контролировать закрытие сокетов\n",
    "- [ ] контекстный менеджер автоматически устанавливает новое соединение, если произойдет его разрыв\n",
    "- [ ] контекстный менеджер для сокета управляет скоростью чтения из сокета"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "117a3a11",
   "metadata": {},
   "source": [
    "##### 4. Отметьте истинные утверждения:\n",
    "\n",
    "- [ ] при возникновении `socket.error` сокет автоматически закрывается\n",
    "- [ ] `socket timeout` нужен для ограничения времени ожидания работы системных вызовов, связанных с сокетами\n",
    "- [ ] исключение типа `socket.error` генерируется при возникновении ошибок работы с сокетами на python\n",
    "- [ ] `socket timeout` нужен для установки нового соединения"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03cd9233",
   "metadata": {},
   "source": [
    "##### 5. Как можно обработать большое количество одновременных соединений к серверу?\n",
    "\n",
    "- [ ] Создание отдельного потока для каждого нового соединения\n",
    "- [ ] Процессы и потоки не нужны, python автоматически обработает все соединения\n",
    "- [ ] Создание отдельного процесса для каждого соединения\n",
    "- [ ] Создание пула процессов и отдельных потоков для каждого соединения"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
