Сервер Telnet

Предупреждение, опция -L позволяет указать путь для поиска библиотек, указать библиотеку, которую вы хотите связать с вами (также) необходимо использовать параметр -l

. чтобы добавить опции -lrpcmod -lnfs -lrpcsec -lklmmod -lzfs

Более подробно в GCC Linking Options

5
задан Mat 23 September 2012 в 13:14
поделиться

6 ответов

Если бы Вы серьезно относитесь к сетевому программированию, я настоятельно рекомендовал бы "сетевое программирование Vol 1 UNIX Richard W. Stevens" - оно намного лучше читает, чем RFCs с яркими примерами.

Это - очень дорогая книга, но существует дешевое издание в мягкой обложке, доступное на eBay. Даже если Вы получаете дорогой выпуск в твердом переплете это стоящий каждого пенса, Вы заплатили.

4
ответ дан 18 December 2019 в 09:11
поделиться

Для очень простого telnet (просто telnet к порту и байтам эха), нет очень, чтобы сделать. Читайте из сокета, обработайте его (в сервере эха, ничего не сделайте), плюньте назад результатом. Вы могли реализовать простой сервер стиля MUD, ничего не зная ни в каком RFCs.

Но если Вы действительно обеспокоены RFCs, RFC 854 мог бы быть начальной точкой.

http://www.faqs.org/rfcs/rfc854.html

9
ответ дан 18 December 2019 в 09:11
поделиться

Обратите внимание, что реальный telnet не является просто простым интерфейсом, который обрабатывает stdin и stdout из оболочки входа в систему пользователя.

Существует большая дополнительная функциональность, которую несут отдельно в 'опциях', которые обрабатывают такие вещи как установка $TERM переменная среды, устанавливая строки/столбцы (и сбрасывая их, если пользователь изменяет размер их терминала).

Если Вы надеетесь делать реальный telnet и не только простой сервер TCP, то действительно RFC 854 является Вашей начальной точкой. Однако существуют стеки более соответствующие RFCs, которые описывают те опции, упомянутые, выше которого перечислены по http://en.wikipedia.org/wiki/Telnet

4
ответ дан 18 December 2019 в 09:11
поделиться

Если Вы нуждаетесь в помощи с сокетом, программирующим и т.д.

руководство beej's контроля: http://beej.us/guide/bgnet/

3
ответ дан 18 December 2019 в 09:11
поделиться

Знание, как сокет работы API внутренне очень полезен, потому что это часто экспортируется с очень незначительными изменениями высокоуровневыми языками.

Тем не менее Вы могли бы хотеть использовать поддержку цикла событий, оказанную Бойким и использовать связанную сетевую библиотеку GNet.

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

#include <glib.h>
#include <gnet.h>

void client_connect(GServer G_GNUC_UNUSED *server, GConn *conn, gpointer G_GNUC_UNUSED user_data){
  g_print("Connection from %s\n", conn->hostname);
  gnet_conn_disconnect(conn);
  gnet_conn_unref(conn); conn = NULL;
}

int main(void){
  GMainLoop *loop = g_main_loop_new(NULL, FALSE);
  GServer *server;
  gnet_init();
  server = gnet_server_new(NULL, 4000, client_connect, NULL);
  g_main_loop_run(loop);
  g_main_loop_unref(loop); loop = NULL;
  return 0;
}
-1
ответ дан 18 December 2019 в 09:11
поделиться

Я рекомендую установить Wireshark для отслеживания трафика Telnet с использованием существующего сервера Telnet. Затем, просмотрев журнал, вы сможете лучше понять, как сервер взаимодействует с клиентом. Затем используйте RFC в качестве справочника, если вы не понимаете ни одну из команд, передаваемых по сети.

-1
ответ дан 18 December 2019 в 09:11
поделиться
Другие вопросы по тегам:

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