Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приём сообщений от сервера [D6, Win95/98, WinME, NT4, Win2k, WinXP]


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

Andr-04 ©   (2006-07-31 15:12:00) 

Добрый день. Как обойтись без использования WSAAsyncSelect для отправления сообщений от сервера и их приёма КЛИЕНТОМ?


Andr-04   (2006-08-07 12:42:00) [1]

> процедуры это ты хорошо придумал, еще не забывай про функции
:-D Ну уж это само собой!


Медведъ   (2006-08-07 10:11:00) [2]

>Andr-04   (05.08.06 22:55) [85]
процедуры это ты хорошо придумал, еще не забывай про функции


Andr-04   (2006-08-05 22:55:00) [3]

> Оно и заметно, судя твоим по вопросам
Мои вопросы не затрагивают исходники готовых модулей. Сервер мой, код которого я приводил, работал, пусть немного был и некорректным из-за невнимательности и из-за того, что некоторым вещам я не придавал существенного значения. Да и тему эту бы не создавал, если бы в стрейме, опять по невнимательности, не забыл бы указать начальную позицию. Мда... Невнимательность меня подводит - код большой из-за того, что мало общих процедур, поэтому как что-нибудь изменю в одном месте, приходится вводить коррективы и в остальных частях. Всё, в следующих своих проектах будут сплошные процедуры! :-D

> Стоить ли выпячивать поделки, не имеющие отношения к логике
> транспорта ?

Это я пример привёл к тому, что исходники я тоже ковыряю.

> Да по барабану, прокси или не прокси)
> Транспорт лежит уровнем ниже !
> Читай про модель OSI до полного просветления.

Я же сказал, что перестраховался и исправил! Более того, всегда буду делать подобным образом!


Сергей М.   (2006-08-05 19:15:00) [4]


> мне вполне хватило kolTCPSocket.pas


Оно и заметно, судя твоим по вопросам


> его и нету! Я его сделал для собственных нужд


Стоить ли выпячивать поделки, не имеющие отношения к логике транспорта ?


> write - сервер выполняет не функции прокси


Да по барабану, прокси или не прокси)
Транспорт лежит уровнем ниже !
Читай про модель OSI до полного просветления.


Andr-04   (2006-08-04 19:44:00) [5]

> Значит следовало честно сказать - я, мол, не могу разобраться
> в исходниках scktcomp.pas)

Я в них не разбирался - мне вполне хватило kolTCPSocket.pas (см. пост 56).

> Понятия не имею, что есть этот самый SockStream.
А его и нету! Я его сделал для собственных нужд.

> Зато вижу, что на предмет грамотной обработки FD_WRITE/CLOSE-
> событий ты не приложил усилий по анализу тех же исходников)

Зато благодаря таким людям как Вы, теперь всё исправил! На счёт close - невнимательность, а write - сервер выполняет не функции прокси, поэтому переполнения там не будет! Но я всё равно перестраховался и поправил. :-)


Сергей М.   (2006-08-04 13:55:00) [6]


> Когда могу разобраться в этих исходниках - так и делаю


Значит следовало честносказать - я, мол, не могу разобраться в исходниках scktcomp.pas)


> На основе чего, Вы думаете, я SockStream свой написал?


Понятия не имею, что есть этот самый SockStream.
Зато вижу, что на предмет грамотной обработки FD_WRITE/CLOSE-событий ты не приложил усилий по анализу тех же исходников)


Andr-04   (2006-08-04 13:45:00) [7]

И недоработки в KOL.pas исправлял?.. Это я к примеру, но не ограничиваясь.


Andr-04   (2006-08-04 13:44:00) [8]

Когда могу разобраться в этих исходниках - так и делаю. На основе чего, Вы думаете, я SockStream свой написал?


Сергей М.   (2006-08-04 13:38:00) [9]


> что толку использовать стандартные компоненты?
> вероятность узнать что-то новое, в таком случае, понижается


Да неужели ?)

Ну хорошо, ну не хочешь ты использовать стандартные компоненты (и/или компоненты вообще), но то самое "новое" лежит прямо у тебя перед носом - в исходниках этих компонентов.. Работающих ! Трассируемых ! Дающих практически нахаляву бесценную инф-цию о правильном использовании API !

))


Andr-04   (2006-08-04 13:14:00) [10]

Основная цель её написаниея - для себя, чтобы не сидеть на месте! Просто интересно было заглянуть немножечко поглубже в работу приложений, вот и пишу на WinSockAPI и другие API. А что толку использовать стандартные компоненты? Вероятность узнать что-то новое, в таком случае, понижается. Да и KOL только за такой подход! В этом сам убедился, когда в KOL.pas исправлял недоделки, руководствуясь всё тем же VCL. Знания не бывают лишними. Надеюсь, мои старания ещё мне пригодятся! ;-)


Сергей М.   (2006-08-04 12:59:00) [11]


> программа для проверки знаний


.. и она, конечно же, ни в коем случае не может использовать готовые компоненты - только на WinsockAPI и только через самоистязание такие программы пишутся)


Andr-04   (2006-08-04 12:49:00) [12]

По поводу FD_WRITE меня смущало предложение "Если же программа отправляет данные не очень большими порциями и относительно редко, не переполняя буфер, то второй раз событие FD_Write не возникнет никогда.". Теперь всё понял (как-то подчёркнутую фразу всё пропускал и, в итоге, боялся, что не получу извещения об освобождении буфера). За ночь в голове уже сформировался алгоритм работы (создам новый динамический массив стреймов для исходящего буфера и буду его заполнять и отправлять при поступлении FD_READ и доотправлять при FD_WRITE). По поводу программы - это и не телефонный справочник, если так интересно - это программа для проверки знаний.


Ketmar   (2006-08-04 10:03:00) [13]

> [73] Andr-04   (04.08.06 02:23)

"я вам вышлю то, не знаю что". хоть бы сказал сначала, что за проект-то. вдруг это телефонный справочник? исходя из "не представляет никакого интереса и масштабного использования", справочник вполне подходит.


Сергей М.   (2006-08-04 08:57:00) [14]


> Andr-04   (04.08.06 02:23) [73]



> когда этот FD_WRITE не происходит из документации толком
> не понял


FD_WRITE происходит как минимум однократно:

1. для кл.гнезда - сразу же за FD_CONNECT
2. для серв. гнезда, того что создается ф-цией accept - сразу после успешного его создания

FD_WRITE происходит всякий раз при фактическом освобождении буфера передачи, если предыдущий вызов ф-ции send() вернул отказ с кодом WSAEWOULDBLOCK, фиксирующий факт невозможности записи в буфер передачи данных размером более свободного места в этом буфере на этот момент.
По сути этот внутренний буфер передачи представляет собой очередь (FIFO), в хвост которой помещаются данные, указываемые при вызовах send-функций, и из головы которой по мере готовности транспортного канала выбираются данные для фактической передачи их в канал.
Буфер имеет фиксированный в каждый момент времени размер, который может быть определен вызовом GetSockOpt(SO_SNDBUF) и переопределен вызовом SetSockOpt(SO_SNDBUF). Буфер индивидуален для каждого гнезда и его размер по умолчанию равен 8К (зависит от ряда важных системных параметров).

При получении отказа с кодом WSAEWOULDBLOCK следует прекратить дальнейшие попытки вызовов send-ф-ций вплоть до возникновения события FD_WRITE.


Andr-04   (2006-08-04 02:23:00) [15]

Да нет, далеко не прокси!.. Пишу четырехлетний проект, в котором лишь присутствует управление по локальной сети, а сам проект вовсе не предназначен для масштабного взаимодействия с локальной сетью и Интернет. Правда ядро уже обновлено, ему 2,5 года... Сама тема проекта не представляет никакого интереса и масштабного использования, поэтому писать её название я умышленно не буду, однако методы решений, используемые в проекте, могут найти свое применение не мало где ещё. Ну для прокси там, конечно, маловато чего можно найти, а вот для использования файлов чужого компьютера, например, - в самый раз. Перед созданием этой темы форума велась работа по созданию сетевых стреймов для KOL'а... Сейчас, благодаря этому форуму, работа с ними практически закончена (осталось только разобраться с исходящим буфером по рекомендации Сергея М. - пока ещё думаю, стоит ли эта игра свеч, т.к. изменять придется немало, потому что сервер работает в режиме "вопрос-ответ", а тут ответ нужно будет ещё кэшировать, да и когда этот FD_WRITE не происходит из документации толком не понял). Это что касается сетевой части. Помимо этого ещё присутствуют собственная, независимая от стороннего ПО, шифруемая БД и другие мелочи. Вообще, первоначально ставилась другая цель разработки данного проекта, но теперь он превратился в средство воплащения идей и развивается только при наличии свободного времени, а также при возникновении ситуации, которая и вдохновила меня на создание проекта. Если есть желание посмотреть на проект, может и баги поискать - подтвердите это и, при необходимости, оставьте e-mail - и я его вышлю. Правда, вышлю не новую версию (без сетевых стреймамов и прочих запланированных функций - эта версия ещё в стадии разработки) и БЕЗ ИСХОДНИКОВ! Но шифрование БД в ней присутствует (оно появилось с появлением нового ядра программы).


FireMan_Alexey   (2006-08-03 23:24:00) [16]

Так что ты конкретно пишешь?
Может подскажем как :)
Скажи что должно передаваться и что приниматься?
Если это очередной прокси ...


Andr-04   (2006-08-03 20:05:00) [17]

Само по себе слово Гуру не оскорбительное, но здесь оно звучит унизительно. Да я, собственно, никуда и не уходил! Может, всё-таки, прикратим разборки и засирание форума? Или модерам всё по...


Ketmar   (2006-08-03 19:26:00) [18]

ай. снова гуру пришёл...


Andr-04   (2006-08-03 19:02:00) [19]

Почитаю при необходимости. Уж с этим я сам как-нибудь разберусь. А вам всем советую быть по-вежливее!


Andr-04   (2006-08-03 19:02:00) [20]

Почитаю при необходимости. Уж с этим я сам как-нибудь разберусь. А вам всем советую быть по-вежливее!


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

Наверх

Титульная страница Поиск, карта сайта Написать письмо