|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.10.2012, 09:36 | #1 |
Пользователь
Регистрация: 23.02.2009
Сообщений: 78
|
socket как узнать что пришёл ответ?
есть функция
function send(s: integer; var Buf; len, flags: Integer): Integer; stdcall; stdcall; external 'wsock32.dll'; ну вы её знаете и знаете то она делает (отправляет сообщение на сервер, после чего сервер отправляет какой то ответ) послу этой функции я вызываю слип, а потом читаю, но проблема в том, что я не знаю какой нужно длины слип вызывать, вопрос: какую функцию использовать, чтобы узнать, что сервер прислал ответ? |
15.10.2012, 09:39 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
select вам нужна
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.10.2012, 09:54 | #3 |
Пользователь
Регистрация: 23.02.2009
Сообщений: 78
|
ммм погуглил про неё сейчас, не очень понятно как её юзать
Код:
через селект не работает! или я что то не правильно делаю, вот моя функция, только толку нету, меньше ждёт чем надо, сервер ещё не послал ответ а она уже выполнилась и рунтайм получается Код:
Последний раз редактировалось Biohazard; 15.10.2012 в 10:16. |
15.10.2012, 10:15 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а что вы хотите ждать вечно?
таймаут позволяет подождать опред время, потом или ошибка таймаута или чтото еще сделать можно. а вы ответ от read проверяете? у меня подозрение что вы слепо верите в то сколько байт вы прочли. select дает положительный ответ если можно прочесть с сокета хоть один байт, не гарантируется что вы прочтете сразу все что послано. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.10.2012, 10:18 | #5 | |
Пользователь
Регистрация: 23.02.2009
Сообщений: 78
|
Цитата:
и чтож там делать? она уже считывает что - ли: как ресв? Последний раз редактировалось Stilet; 15.10.2012 в 11:22. |
|
15.10.2012, 11:46 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить полный ответ от Socket | Shouldercannon | Работа с сетью в Delphi | 3 | 09.03.2012 23:05 |
Как узнать, что Button нажата? | shumsheec | Общие вопросы Delphi | 2 | 29.06.2011 12:35 |
Как узнать что за видео-карта? | VintProg | Свободное общение | 5 | 02.09.2010 19:48 |
Как узнать что в содержимое буфера обмена добавилось что либо? | zotox | Общие вопросы Delphi | 2 | 15.09.2009 12:07 |
DLL!!!Как узнать что PUSH-ит!!! | Kuznecov | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 10.02.2009 22:04 |