![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как написать КлиентСокет на АПИ?
ss18 © (2002-05-27 23:30:00)Если у кого нибудь есть примерчик как это написать киньте плиз. Мучаюсь, ничего понять не могу.
Digitman (2002-05-29 09:13:00) [1]recvfrom() нужно вызывать в контексте обработки события FD_READ, возникновение которого фиксирует факт наличия в буфере данных гнезда принятой дейтаграммы.
Разные потоки должны работать с разными гнездами. Нет никакого смысла в организации нескольких доп.потоков, конкурирующих за право доступа к одному и тому же гнезду по чтению-записи. Каждый же конкретный вызов recvfrom()/sendto() оперирует хендлом только одного (указанного в качестве параметра) гнезда.
Хотя ф-ции гнездового приема/передачи и являются threadsafe (содержат встоенный механизм мультипоточной синхронизации), злоупотреблять этим не следует и при мультипоточном доступе к этим ф-циям крайне желательно организовать собственный механизм синхронизации (используя critical section, mutex, semaphore e.t.c)
ss18 (2002-05-28 18:20:00) [2]а когда нужно вызывать recvfrom()? В ютом собственно и проблема. Причем нужно чтобы разные потоки могли сделать это одновременно (послать и/или получить)...Как в таком случае?
Digitman (2002-05-28 15:40:00) [3]замечательно ! конкретней некуда ) ...
вот тебе, соответственно, и столь же конкретные ответы на вопрос "как" :
sendto() - для передачи дейтаграммы
recvfrom() - для приема дейтаграммы
ss18 (2002-05-28 15:12:00) [4]2Digitman ©
Конкретно: Как послать утп дейтаграму и принять ответ (тоже дайтагруму)?
Digitman (2002-05-28 12:27:00) [5]>>ничего понять не могу
Что непонятно ? Конкретно ?
cyborg (2002-05-27 23:45:00) [6]ctrl держишь, нажимаешь например на sendtext и так далее и придёшь к тому что увидишь, что сокеты итак на АПИ написаны