Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

работа с IndyUDPServer в потоке Thread   Найти похожие ветки 

 
XfroSt   (2006-12-21 16:31) [0]

Ситуация такая... я работаю с IndyUDPServer в потоке...
метод execute описан так

procedure TGameThread.Execute;
begin
 inherited;
 UdpS := TidUDPServer.Create(nil);
 ScanGame;
 Sleep(2000); // ожидаем 2 секунды (сделать настройку) для ответа UDP
 UdpS.Destroy; // уничтожаем сервер
 TGameThread(ThreadList[ThreadList.Count - 1]).Terminate; // убираем один поток из списка
 ThreadList.Delete(ThreadList.Count - 1);
end;

процедура ScanGame выглядит так

begin
             // Если UDp
               UdpS.Active := false;
               Udps.OnUDPRead := UdpsUDPRead;
               UdpS.DefaultPort :=Cport ;
               UdpS.BroadcastEnabled := true;
               Udps.ThreadedEvent := true;
               UdpS.Active := true;
               UdpS.Broadcast(pak,Sport);
               

             end;

при это как видно поток живет 2 секунды, сервер переходит в ожидание и отсылает запрос. Если приходит ответ в течении 2 секунд, то он обрабатывается если нет , то сервер и поток уничтожаются.

Данный поток из основной программы я вызываю вот так
ThreadList.Add(TGameThread.Create(false));

Проблема при вызове двух потоков одновременно (они отсылают разные запросы), когда второй поток делает вот это
UdpS.Broadcast(pak,Sport)
, а прервый еще не уничтожился, возникает ошибка Counot bind the socket.

Вопрос!
Как можно организовать работу нескольких потоков IndyUDPServer что бы не возникало такой ошибки ? как я понял просто второй занимает тот же сокет, как ему дать другой. Что бы можно было многопоточно отсылать сообщения и ждать их ответов ?


 
Сергей М. ©   (2006-12-21 16:35) [1]


> как ему дать другой


UDPServer.Binding.Port := даю_другой

А вообще - каша какая-то из обрывочных сведений о многом понемногу.


 
XfroSt   (2006-12-21 16:52) [2]


> UDPServer.Binding.Port := даю_другойА вообще - каша какая-
> то из обрывочных сведений о многом понемногу.

а это назначается порт отправки или порт приема ?

какие сведения еще сообщить ? вроде я описал все пошагово...


 
Сергей М. ©   (2006-12-22 08:20) [3]


> а это назначается порт отправки или порт приема ?


Порт приема.


> поток живет 2 секунды, сервер переходит в ожидание и отсылает
> запрос


Судя по твоему коду дело обстоит так

1. Сервер активируется.
2. Выполняет бродкаст на указанный параметром порт.
3. Поток спит 2 секунды богатырским сном, ничего не делая и ни на что не реагируя при этом.
4. Поток просыпается, уничтожает сервер и тут же завершает свое выполнение.


 
Сергей М. ©   (2006-12-22 08:43) [4]

И зачем тебе куча доп.потоков - это тоже не понятно.

Достаточно одного. Да и он не нужен - при ThreadedEvent = true всё это с успехом делается в осн.потоке.


 
XfroSt   (2006-12-22 20:47) [5]

Сергей М Спасибо!
Я решил по другому... -- UdpS.Binding -- все работает ....



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
2-1183640247
POP
2007-07-05 16:57
2007.07.29
64bit HEX преобразовать в DEC строку


2-1183454141
_Asph
2007-07-03 13:15
2007.07.29
Видимость модулей


4-1171614711
niko_
2007-02-16 11:31
2007.07.29
Блокировка Ctr+Alt+Del


15-1183140804
antonn
2007-06-29 22:13
2007.07.29
доступ к файлу и htaccess


2-1183461171
Тимофей
2007-07-03 15:12
2007.07.29
всё очень просто





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский