Здравствуйте, Marty, Вы писали:
M> Наткнулся тут на заметку как "приготовить" сокет для использования с функциями ReadFile, WriteFile и прочими, которые принимают HANDLE.
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/bshanl/scripts/google.php on line 30
Здравствуйте, quodum, Вы писали:
Q>Здравствуйте, Marty, Вы писали:
M>> Наткнулся тут на заметку как "приготовить" сокет для использования с функциями ReadFile, WriteFile и прочими, которые принимают HANDLE.
Q>
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/bshanl/scripts/google.php on line 30
M> Наткнулся тут на заметку как "приготовить" сокет для использования с функциями ReadFile, WriteFile и прочими, которые принимают HANDLE.
Во-первых, об этом я немного писал здесь.
Во-вторых, по-умолчанию все TCP/IP-сокеты это файловые хендлы.
Разумеется, это если в системе не стоят какие-нибудь хитрые LSP-фильтры.
Здравствуйте, x64, Вы писали:
x64>Во-первых, об этом я немного писал здесь.
Интересно. Правда вы пишете, что сокет является HANDLE фактически, но как я понимаю, официально это не гарантируется.
А тут вроде вполне документированный и гарантированный способ получить SOCKET являющийся HANDLE.
x64>Во-вторых, по-умолчанию все TCP/IP-сокеты это файловые хендлы.
Не знал. Более того, вроде как-то давно поднимал тут на форумах этот вопрос, и мне объяснили, что сокеты это совсем не хэндлы
Интересно, а можно использовать обычные, например, файловые HANDLE с BSD API — select, recv, send?
Здравствуйте, Marty, Вы писали:
M> Наткнулся тут на заметку как "приготовить" сокет для использования с функциями ReadFile, WriteFile и прочими, которые принимают HANDLE.
Здравствуйте, Marty, Вы писали:
C>>Английский в статье ужасен.
M>Хех, наверно индус писал
К сожалению, шутка про кошек «Do you like cats? No. Oops, you simply aren't able to prepare them» и оборот «Exact the same and with sockets» («то же самое и с сокетами») выдают в авторе русского.
M>А по мне так читаемо, худо-бедно понял что к чему.
Понять-то несложно, тем более что большая часть статьи — C++. Но читать неприятно.
Здравствуйте, Marty, Вы писали:
M> Здравствуйте, коллеги!
M> Наткнулся тут на заметку как "приготовить" сокет для использования с функциями ReadFile, WriteFile и прочими, которые принимают HANDLE.
По умолчанию, для совместимости со всеми подсистемами майкрософтовские провайдеры для WinSock дают в качестве идентификаторов обычные хенды. Но реально, реализации протоколов делать это необязаны, они должны двать unsigned int в качестве идентификатора соединения. Поэтому использовать файловые функции вроде как и можно, а вроде как и лучше использовать WSASend/WSARecv. К тому же функциональность одинакова.
Здравствуйте, 11molniev, Вы писали:
1>По умолчанию, для совместимости со всеми подсистемами майкрософтовские провайдеры для WinSock дают в качестве идентификаторов обычные хенды. Но реально, реализации протоколов делать это необязаны, они должны двать unsigned int в качестве идентификатора соединения. Поэтому использовать файловые функции вроде как и можно, а вроде как и лучше использовать WSASend/WSARecv. К тому же функциональность одинакова.
Это удобно, использовать для всех типов потоков одни и те же функции. Хотя бы для ожидания готовности, как в Unix'ах select подходит для всех файловых дескрипторов ( в тч и для сокетов, пайпов), так и в винде такой механизм удобен — можно делать WaitFor* на различных хэндлах.