![]() |
|
Модераторы: xvr |
![]()
|
|
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Помогите разобраться с заданием и подскажите с чего начать. Пробвал читать RFC по SMTP, но понимания что именно нужно делать не пришло
Задание звучит так: Написать программу, которая выполняет функции промежуточного SMTP-сервера. Сервер должен получить инструкции от клиента на передачу почты, добавить в заголовок сообщения информацию о промежуточный сервер и передать сообщение другому SMTP-серверу. |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
ИМХО, начать надо с простого сквозного TCP сервера. т.е. Получает команды. отправляет на реальный сервер, и всё это логится... Дальше - дело техники. Набросать простой сервак ?
|
|||
|
||||
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Сквозной TCP сервер, я думаю, смогу написать, а как быть дальше? Нужно тогда еще написать псевдо-клиент, который будет отправлять этому серверу готовое письмо с заголовком? И, наверное, еще один псевдо-сервер который будет ловить все эти сообщения, потому как реальные SMTP сервера наверняка меня пошлют
|
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
А дальше... Сквозным серваком ловите команду DATA, читаете тело письма, добавляете нужный хидер и шлете дальше...
|
|||
|
||||
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Начинаю понимать. И еще два вороса: Как лучше будет читать данные из сокета если я знаю что шлет их почтовый клиент? Какой нужен размер буфера?
|
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
mChief,
Первый вопрос не понял. Второй... На любителя. Вплоть до мегабайта. Больше я бы не стал |
|||
|
||||
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Неудачно сформулировал первый вопрос
Попробовал написать сквозной сервер, подскажите если что не так
Как я понимаю теперь в коде потомка нужно ловить команду DATA и править заголовок письма. |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Нормально. Только я бы bzero заменил на memset, да результат bind проверил...
Добавлено через 59 секунд На счет особенностей. Знаю одну. Конец строки должен быть 0x0D 0x0A. В *nix используется только 0x0A. 0x0D надо ручками добавлять..... |
|||
|
||||
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Спасибо за помощь, дальше я уже допишу
|
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
mChief,
Завсегда пожалуйста... |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
mChief,
во-первых по самому коду, я настоятельно рекомендую компилировать с ключом -Wall и фиксить все warning'и это просто хороший стиль, а иногда позволяет выявить потенциальне баги ;) во-вторых по типу реализации сервера: никогда без особой необходиости не следует юзать форки мультиплексирование ввода-вывода никто не отменял ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| mChief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
MAKCim, спасибо за замечания
А можете немного пояснить про форки и мультиплексирование ввода-вывода ? |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |