|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Dmitry Radishev 2:5015/42 26 Jul 2002 18:45:13 To : 3APA3A Subject : прокси -------------------------------------------------------------------------------- Friday July 26 2002 11:51, 3APA3A wrote to Dmitry Radishev: DR>> устраивает? Заменяем read/write на recv/send соответственно, и DR>> смотрим что получилось... AA> А ничего не получилось. В Windows send/recv всегда блокирующие (потому AA> как fcntl там тоже нет :)) ), придется select использовать. Собственно AA> это тоже не сложно. Хм. Читаем документацию по winsock 1.1 (2.0 под рукой нет, но и этой достаточно). fcntl() действительно нет (ну так и fork() в виндах нет - но это же не трагедия), но есть возможность загнать сокет в неблокирующий режим: === End Windows Clipboard === int PASCAL FAR ioctlsocket ( SOCKET s, long cmd, u_long FAR * argp ); [ ..погрызено.. ] Command Semantics FIONBIO Enable or disable non-blocking mode on the socket s. argp points at an unsigned long, which is non-zero if non-blocking mode is to be enabled and zero if it is to be disabled. When a socket is created, it operates in blocking mode (i.e. non-blocking mode is disabled). This is consistent with BSD sockets. === End Windows Clipboard === И комментарий к send() (аналогичный идет у recv()) на тему поведения при non-blocking i/o. === Begin Windows Clipboard === int PASCAL FAR send ( SOCKET s, const char FAR * buf, int len, int flags ); [ ..погрызено.. ] If no buffer space is available within the transport system to hold the data to be transmitted, send() will block unless the socket has been placed in a non-blocking I/O mode. On non-blocking SOCK_STREAM sockets, the number of bytes written may be between 1 and the requested length, depending on buffer availability on both the local and foreign hosts. The select() call may be used to determine when it is possible to send more data. [ ..погрызено.. ] WSAEWOULDBLOCK The socket is marked as non-blocking and the requested operation would block. === End Windows Clipboard === Так что "всегда блокирующие" - это кажимость :-) All the best //DiBR [TEAM ВСЕ МАСТДАЙ] [шестая базовая] [http://dibr.nnov.ru] --- [LPT] LaMerZ PrOfeSsIoNaL TeaM /member/ * Origin: Ты еще не убил своего Томагоччи? Сделай это сегодня! (2:5015/42) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/18153d41a8f6.html, оценка из 5, голосов 10
|