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 для отправления сообщений от сервера и их приёма КЛИЕНТОМ?


Сергей М.   (2006-08-03 11:50:00) [41]


> почему при подключении, передаче данных и отключении клиента
> сначала срабатывает FD_ACCEPT, потом FD_CLOSE и лишь после
> этого FD_READ?


Быть того не может)

Показывай код сервера ..


Andr-04   (2006-08-03 11:42:00) [42]

Динамические массивы не было необходимости никуда передавать! Я их до этого случая использовал для хранения переменных данных, всего навсего. Например, для хранения указателей (PControl) на динамические компоненты и т.п. (Конечно, в KOL все они динамические - я имею в виду те, которые я создавал сам в процессе работы программы, а не те, которые пишет MCK при компиляции).
Да, Вы правы. Я всё записывал ещё и в стрим. Провернул всё в голове и послал пока этот динамический куда подальше! При приёме буфера записываю сначала всё в статический массив, а потом в стрим.

Поскольку обсуждение ещё не закрыли, позволю задать ещё вопрос: почему при подключении, передаче данных и отключении клиента сначала срабатывает FD_ACCEPT, потом FD_CLOSE и лишь после этого FD_READ? Как поменять FD_CLOSE местами с FD_READ? Это же физически невозможно передавать буфер с закрытым сокетом! В блокирующий режим переводить - не помогает. Ато это приводит к уничтожению Stream'а (у меня - при вызове FD_CLOSE). Если через отладку всё делать, то всё происходит как положено.


Сергей М.   (2006-08-03 11:22:00) [43]


> Andr-04   (03.08.06 11:13) [42]


> не было необходимости, вот и не знал


А тут вдруг появилась, надо понимать ?

Подозреваю, что ты пытаешься приспособить для аккумуляции принимаемых данных. А разумней для этой цели было бы использовать стрим, а не массив.


Ketmar   (2006-08-03 11:18:00) [44]

> [42] Andr-04   (03.08.06 11:13)


> годик с лишним

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


Andr-04   (2006-08-03 11:16:00) [45]

Что-то обсуждений моей личности здесь слишком много. А ведь для этого, вроде, есть специальное место (вроде - это потому, что я там никогда не был).


Andr-04   (2006-08-03 11:13:00) [46]

Да и динимаическими массивами только годик с лишнима занимаюсь... Ну не было необходимости, вот и не знал! Шесть лет для программирования может показаться большим сроком, если шесть лет исследовать каждую его область. Я же этим занимаюсь не на протяжении всего периода, да и нет так усердно, честно говоря. Изучаю только то, что требуется в данный момент.


Andr-04   (2006-08-03 11:06:00) [47]

Не гоню! Правда, первый год это был Паскаль, потом чистый VCL, BDE и вся стандартная ерунда. А последние 2,5 года пишу исключительно в KOL, что часто приводит к рассмотрению и WinAPI. Вот и хорошо. Это с сокетами я тольо так лопухнулся! Если так хотите посмотреть на мой проек - пишите мыло, а если не верите - ну и не надо! Мне от этого ни горячо, ни холодно.
А WSAAsyncSelect, как оказалось, здесь действительно не причём.


Сергей М.   (2006-08-02 15:41:00) [48]


> medved_68 ©   (02.08.06 15:12) [38]


> ты точно гонишь


"Эт точно" (с) Сухов


Ketmar   (2006-08-02 15:36:00) [49]

> [33] Andr-04   (02.08.06 14:59)

я тебе на это уже давно намекал. %-)


medved_68   (2006-08-02 15:12:00) [50]


> Ещё только 6 лет программирую - мало ещё! :-)


> нужно указывать buf[0]!

Шесть лет!!!! Ну вот сейчас ты точно гонишь.


Сергей М.   (2006-08-02 15:08:00) [51]

Ну тады, возвращаясь к нашим баранам, какое отношение все это имеет к  WSAAsyncSelect ?


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


> Еще бы ты разобрался с Get/SetSockOpt - цены б тебе не было.

Да, уже и с этим успел познакомиться, но лишь всколзь. Если будут опять проблемы - впервую очередь это почитаю! Мне очень помогла статья из королевства
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021&mode=printНу и её вторая часть...


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


> Проотладчик ты, разумеется, слыхом не слыхивал.
> Значит тебе пора закругляться с потугами на поприще программинга.

Какраз-таки отладчик мне это и сказал! А программировать заканчивать я и не думаю! Ещё только 6 лет программирую - мало ещё! :-)


Сергей М.   (2006-08-02 15:00:00) [54]

Малацца.
Еще бы ты разобрался с Get/SetSockOpt - цены б тебе не было.


Andr-04   (2006-08-02 14:59:00) [55]

А, всё, разобрался! Форум уже в чат превратился по моей милости! Опять неправильно с динамическим массивом работал. ВЕЗДЕнужно указывать buf[0]! Да будет это мне уроком! Очень извиняюсь за отнятое время! Спасибо всем!


Сергей М.   (2006-08-02 14:52:00) [56]

Проотладчик ты, разумеется, слыхом не слыхивал.
Значит тебе пора закругляться с потугами на поприще программинга.


Andr-04   (2006-08-02 14:44:00) [57]

У меня теперь другая проблема - после вызова send программа аварийно завершается, хотя сервер это сообщение благополучно получает!..


Сергей М.   (2006-08-02 14:30:00) [58]


> в сервере указывал на передачу пустого буфера из Stream,
>  из-за того, что забыл назначить нулевую позицию именно
> в Stream'е! И читаю конец, спокойный такой


Ты гонишь.

recv() в этом случае никак не может вернуть SOCKET_ERROR.


Сергей М.   (2006-08-02 14:28:00) [59]


> Andr-04   (02.08.06 14:09) [27]


> Значение какой массив - динамический или статический не
> имеет


Может и не имеет. А вот выбор размера массива имеет.


> WSAGetLastError выдаёт 0


Этого не может быть. потому что этого не может быть никогда (с)

Справка к send() гласит:

Return Values

If no error occurs, send returns the total number of bytes sent. (Note that this can be less than the number indicated by len.) Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.

Ты когда-нибудь научишься ее читать, ту самую справку ?


> использовать готовые компоненты смысла нет - модуль пишу


С каких пор использование готовых компонентов потеряло смысл ?
И при чем здесь модуль ?


> Для чего - не скажу


Сексот ты наш)


> это не имеетзначения


Имеет ! Еще как имеет !

Трассируя пошагово чужой (заведомо работоспособный) модуль ты приобретаешь необходимые знания.


Andr-04   (2006-08-02 14:21:00) [60]

Ну я и мудило! Столько и времени, и места на форуме угробыл! Мда... Короче, тему можно закрыть, а лучше и удалить, потому что от неё больше никакого толка никому не будет! Я в сервере указывал на передачу пустого буфера из Stream, из-за того, что забыл назначить нулевую позицию именно в Stream'е! И читаю конец, спокойный такой! Не внимательно получилось!


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

Наверх

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