UNPKG

learnyounode

Version:

Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.

57 lines (39 loc) 4.33 kB
Реализуйте **TCP сервер**, возвращающий текущее время при соединении. Ваш сервер должен ожидать TCP соединений на порту, который Вы получите в качестве первого аргумента командной строки. На каждое новое соединение сервер должен возвращать текущую дату и время в формате: ``` "YYYY-MM-DD hh:mm" ``` В конце строки с именем обязательно должен быть символ **переноса строки**. Месяцы, дни, часы и минуты должны быть двучисленными, например: ``` "2013-07-06 17:42" ``` ---------------------------------------------------------------------- ## ИНФОРМАЦИЯ В этом задании мы будем создавать простой TCP сервер. Так как нам не потребуется HTTP, то мы можем просто использовать встроенный модуль `net`, который включает в себя все базовые функции для работы с сетью. У `net` модуля есть метод `net.createServer()`, который принимает функцию в качестве аргумента. В отличие от других функций обратного вызова в Node, функция, переданная в `net.createServer()` вызывается больше чем один раз. Каждое новое соединение с сервером будет вызывать эту функцию. Она имеет следующую сигнатуру: ```js function callback (socket) { /* ... */ } ``` `net.createServer()` возвращает экземпляр `server`. Вы должны вызвать `server.listen(portNumber)`, для того чтобы запустить сервер на заданом порту. Типичный Node TCP сервер выглядит так: ```js const net = require('net') const server = net.createServer(function (socket) { // socket handling logic }) server.listen(8000) ``` Помните о том, что Вы должны использовать номер порта, переданный Вам в первом аргементе командной строки. Объект `socket` содержит в себе много мета-данных о соединении, но помимо этого, он так же является дуплексным потоком (duplex Stream) Node, это означает что он может и читать, и писать данные. В нашем случае мы должны только написать (вывести) данные и затем закрыть соединение. Используйте `socket.write(data)`, для того чтобы вывести данные и `socket.end()`, для того чтобы закрыть соединение. Также метод `.end()` может принимать данные в качестве аргумента, поэтому Вы можете вывести данные следующим образом: `socket.end(data)`. Документацию для `net` модуля Вы сможете найти, набрав в браузере: {rootdir:/docs-nodejs/net.html} Для работы с датой воспользуйтесь `new Date()` объектом. Следующие методы могут быть полезны: ```js date.getFullYear() date.getMonth() // starts at 0 date.getDate() // returns the day of month date.getHours() date.getMinutes() ``` В другом случае, если работа со стандартным объектом даты кажется скучной, то можно воспользоваться `strftime` библиотекой. Функция `strftime(frm, date)` принимает такие же форматы даты, как и unix `date` комманда. Дополнительную информацию о `strftime` Вы можете получить на: https://github.com/samsonjs/strftime