Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Любителям Винсока (Не вопрос, а ответ!) Добавлено: 30.12.03 18:36  

Автор вопроса:  DaSharm | Web-сайт: dasharm.com | ICQ: 780477 

Ответить

  Ответы Всего ответов: 54  

Номер ответа: 16
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #16 Добавлено: 04.01.04 00:34

Контроль конечно квасный, неччего не скажеш... Молодец!

а слабо зделать ещё, чтобы при отключении сервера, всем подключённым к неему клиентам, посылалось сообщение типа state = Closed

Ответить

Номер ответа: 17
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #17
Добавлено: 04.01.04 01:48

Нет, здесь нужно ввести константы в событие Error. Спасибо за идею. Шас сделаю.

Ответить

Номер ответа: 18
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #18 Добавлено: 04.01.04 16:11

напишеш когда, будь другом чиркни на zoomer_sd@mail.ru что готово.

Ответить

Номер ответа: 19
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #19
Добавлено: 04.01.04 16:16

Без проблем.

Ответить

Номер ответа: 20
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #20 Добавлено: 05.01.04 00:39

чёт я непонял,а как работать с твоим контролем, когда много клиентов?

Ответить

Номер ответа: 21
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #21
Добавлено: 05.01.04 00:42

Этого я не сделал потому, что нужно такое только для чатов (не припоминаю чтоб где-то еще встречалось). Со временем я собираюсь сделать отдельный контрол "Тяга-чат". А пока трояны пиши.

Ответить

Номер ответа: 22
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #22
Добавлено: 05.01.04 00:46

Почему только для чатов? А для Web-серверов? Каждый раз заново создавать? А для координации распределенных вычислений (динамическое создание сокетов слишком ресурсоемко...)?

Ответить

Номер ответа: 23
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #23
Добавлено: 05.01.04 00:56

Ты хочешь Апач переплюнуть?И каких-каких вычислений?

Потом сделаю, (где-то я "Тязе 3.0")

Ответить

Номер ответа: 24
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #24
Добавлено: 05.01.04 01:29

Да, я действительно хочу переплюнуть Apache :)

Он тормознутый, глючный, неудобный и слишком большой. И консольный. Я б лучше поставил себе Small HTTP Server, но лень искать...

Ответить

Номер ответа: 25
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #25
Добавлено: 05.01.04 06:34
Про аутентификацию. Вот, типа статейки:

---------------------------------------
Статья написана "для себя", дабы задокументировать ночное бдение
над этой самой SMTP-авторизацией.
Захотелось мне в своей программульке удобство завести - мозможность
отослать по E-mail коротенькое сообщение. Выяснилось, что послать
письмо на сервер,кроме как на сервер провайдера нет возможности.
Почти все SMTP сервера работают толко с авторизацией пользователя
(защита от спама).
SMTP протокол такой авторизации не предусматривает, а вот ESMTP
(с расширенным списком команд) позволяет провести авторизацию.
Все это известно большинству системных программистов и администраторов,
а информации на русском языке в Интернете почти нет и куда же
начинающему программисту деваться?
Вот посмотрите как сделать авторизацию, к примеру,на сервере Яндекса.
Подразумевается, что читатель знаком с SMTP протоколом (реализован в
вышеназванном примере)
1.Алгоритм авторизации:
По команде EHLO (наверно от HELO, потому не путайте), получаем от сервера
инструкцию авторизации (метод).
О методах читайте в RFC 2554 (SMTP Authentication).
2.Командой AUTH осуществлем авторизацию предписанным сервером методом.
Мы будем рассматривать самый простой, понятный и проверенный метод -
это метод LOGIN.
Листинг "запрос-ответ":
S: - ответ сервера
C: - запрос клиента
Коннектимся к серверу smtp.yandex.ru.
S:220 Yandex ESMTP (NO UCE)(NO UBE) server ready at Fri,
5 Dec 2003 05:21:30 +300
C:EHLO smtp.yandex.ru - получение метода авторизации с сервера
S:250-bingo.yandex.ru expected "EHLO ppp-149-135.dialup.metrocom.ru"
250-SIZE 5000000
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-ENHANCEDSTATUSCODES
250-DSN
250-AUTH=LOGIN
250-AUTH LOGIN - метод
250-STARTTLS
250-ETRN
250 HELP
C:AUTH LOGIN -делаем запрос предписанным методом
S:334 VXNlcm5hbWU6 - слово Username в кодировке base64
C:cMGyc2Vj - посылаем логин
S:334 UGFzc3dvcmQ6 - слово Password: в кодировке base64
C:cG5xbGU= - посылаем пароль
S:235 Authentication successful .- авторизация завершена
Далее идет команда посылка письма.

Пример кода на VB.NET для перекодировки (MSDN):
Dim txtUserName1 As String="MyUserName" 'имя в ASCII кодировке
Dim txtUserName2 As String 'имя в Base64 кодировке
Dim byteArray(System.Text.Encoding.ASCII.GetByteCount(txtUserName1)) As Byte
byteArray = System.Text.Encoding.ASCII.GetBytes(txtUserName1)
txtUserName2 = Convert.ToBase64String(byteArray)
Другие методы:
S:250-AUTH LOGIN PLAIN
C:AUTH PLAIN bWVAcmF2ZW4uZWxrLnJ1AG1lQHJhdmVuLmVsay5ydQBwYXNzd29yZDop
этим методом посылается зашифрованный логин с паролем в кодировке base64
(закодирована строка "логин\0логин\0пароль").
Насчет универсальности этой строки пока не знаю.
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN
В этом ответе сервера предписывается пользоваться методом CRAM-MD5
C: AUTH CRAM-MD5
S: 334 PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=
ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
S: 235 Authentication successful.
Что за метод, читайте в RFC 2554
(если кто-нибудь переведет на рус.яз - будет очень хорошо)
Вот другой, более локаничный пример (нам интересна только строка с AUTH):
C:EHLO mail.infostar.ru
S:250-infoserver.infostar.ru Hello [ppp-130-98.dialup.metrocom.ru]
250-XEXCH50
250-HELP
250-ETRN
250-DSN
250-SIZE 1048576
250-AUTH LOGIN
250 AUTH=LOGIN
C:HELO cMGyc2Vj
S:503 Bad Sequence
Это сервер провайдера отказался дальше работать с почтой. Может попричине
того, что я уже авторизован, ведь без процедуры авторизации письма шлются.
А может существует другой механизм, ведомый только системщикам.
Главное, чтобы после коннекта в ответе сервера содержалась ссылка на ESMTP
протокол. Другой протокол может даже понять команду EHLO,
но в ответе не даст метода авторизации. Такой сервер и ругаться не будет,
а просто "потеряет" ваше письмо. Экспериментируйте!
По большому счету, авторизация требует и логина, и пароля, и
нет провайдера без предоставления ящика под почту, но так приятно
иметь чуть больше свободы себе и пользователям программ.
Возможно, допущены некоторые неточности в описании, но пример реально
работающий и любой может его повторить и продолжить исследование..
Ссылки на некоторые веб ресурсы по теме:
- Описание протоколов SMTP и POP3 (рус.яз) - http://tehnofil.ru/tdwm.html
- "Как выбирать поставщика Интернет-услуг"- статья про E-mail услуги в т.ч. http://www.nestor.minsk.by/kg - "postfix 2, cyrus-sasl 2, kaspersky antivirus, spamassassin, courier-imap, tls, mysql how-to(FreeBSD4LE)"- статья для системных программистов - www.citeforum.ru
---------------------------------------

Ответить

Номер ответа: 26
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #26 Добавлено: 05.01.04 09:00

Может, я невнимательно читал, но где же SocketFlags? Как, к примеру, поставить ReUseAddress? Опять же придется через API...

Ответить

Номер ответа: 27
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #27 Добавлено: 05.01.04 09:16

2DaSharm: и мне свисни на aesoft@mail.ru когда будет готова новая версия

Ответить

Номер ответа: 28
Автор ответа:
 Pashenko



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #28 Добавлено: 05.01.04 14:46

Несколько замечаний:

1. Свойства LocallIP и LocallNetName: может, хватит одной буквы l?

2. Хотелось бы поиметь свойство State для определения состояния конторола в любой момент времени, а не только при изменении состояния.

3. По поводу ошибок: может, кроме описания ещё и номер ошибки выдавать?

4. По поводу работы с почтой: а не вынести ли всё это хозяйство в отдельный контрол или класс? Это ведь не всем и не всегда нужно, а увеличивать размер программы без необходимости не очень хочется.

Ответить

Номер ответа: 29
Автор ответа:
 Pashenko



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #29 Добавлено: 05.01.04 15:46

Да, кстати:

>>'// принимаем коннект
>>newSock = accept(so, ddm, Len(ddm))

Вопрос: можно ли узнать IP-адрес (и порт, хотя порт, возможно, и не надо) удалённого компьютера до установления соединения и самостоятельно принять решение об установлении соединения?

 

Как вариант, можно рассмотреть добавление к контролу свойства AutoAccept (или AutoConnect или т. п.), True - контрол работает как в текущей версии, False - необходимо подтверждение на установление соединения. При этом, видимо, придётся создать событие (ConnectionRequest в Winsock), в параметрах события хотелось бы видеть параметры запрашиваемого соединения (см. выше).

 

Думаю, такой подход сделает работу более гибкой как по сравнению с Winsock, так и по сравнению с текущей версией Тяги.

 

Желаю удачи

Ответить

Номер ответа: 30
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #30
Добавлено: 06.01.04 01:15

До коннекта невозможно посмотреть Айпи, в событие error уже введены константы, отдельный клас для отсылки почты?Зачем?У меня совсем небольшая ф-ция. Над остальным подумаю в версии 2.0. Версия 1.5 уже готова, днем выложу для скачивания.

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам