![]() |
nonblocking sockets C (си)
доброго времени суток, уважаемые.
писал программку на Си - что то отдалённо напоминающее хттп клиент отправляет гет запрос и ждет ответа сервера. использует сокеты. Код:
#include <stdio.h>делается это с помощью non-blocking sockets применить наверное к этому Код:
n = read(sockfd,buffer,255);Код:
#include <unistd.h>Вот тут всё расписано, но у меня не получается сделать нон блокинг сокетс. Если кто сможет переписать программку из листинга 7 из C++ в C буду благодарен. Прошу помощи P.S. сейчас у меня линукс установлен, но юзать прожку буду на мастдае. что то мне думается что на нём работать это не будет и надо использовать winsock api :confused: |
думаешь правильно....
в мастдае свои механизмы особенно что касается выставление обработчиков WSAAsyncSelect... вызова ф-ций этих обработчиков! есть правда некоторое сходство на блокирующих сокетах! |
на блокирующих сокетах тоже можно жить... надо лишь знать что такое потоки и евенты... createThread, createEvent
|
переписал на winsock с неблокирующими сокетами.
доп зависимости в линкере wsock32.lib Ws2_32.lib Код:
#include <stdio.h> /* for printf(), fprintf() */ошибка соединения, почему не понимаю :confused: connect () failed: no error |
ты не понял!!! В Виндоузе неблокирующие сокеты реализуются через
WSA**** функции и самую главную из них я указывал твоей программе приходят события FD_READ FD_ACCEPT FD_CLOSE ( FD_WRITE FD_CONNECT ) а обработчики быстро обрабатывают! ... но по моему плохая это идея линуксоиду писать под мастдай на неблокирующих! В этом случае ты должен понимать событийную модель мастдая! |
Цитата:
http://msdn.microsoft.com/en-us/library/ms738573%28VS.85%29.aspx |
Цитата:
Хотя и WSAIoctl тоже хорош, помощнее будет сейчас буду мучать события |
2 Kaimi
пости по теме, бросать топики близкие по теме ГЛУПО , то у ТС гораздо ближе к истине чум тупые ссылки на МСДН ! У всех есть МСДН посмотрят и без тебя! TC неблокирующие сокеты отдают управление сразу, например recv вернет сразу с нулевым результатом , но гонять recv в цикле ГЛУПО если recv не ждет принятия пакета..... задерживать слипами так же ГЛУПО ... в этом случае проигрыш в производительности блокирующему! Поэтому сервера пишут на асинхронных сокетах учитывающих событийную моlель мастдая,тогда я вполне конкурирую с реализацией в других ОС! Пишу лет 10-ть на асинхронных 8)) |
Цитата:
|
Модератор потрите флуд Kaimi
Kaimi зачем ты ходишь и засираешь темы? |
| Время: 23:04 |