Здраствуйте. Пишу такой код, в результате ловлю ошибку WSAENOTSOCK, т.е. передан НЕ хендл сокета. А это хендл, и если убрать вызов WSAAsyncSelect, ошибки не возникает. Почему так происходит?
| Код | SocketHandle := winsock.Socket(AF_Inet, Sock_Stream, IPProto_TCP); Addr.sin_family:=AF_Inet; Addr.sin_addr.S_addr:=Inet_Addr( pansichar(FIP) ); Addr.sin_port:=HToNS(FPort); FillChar(Addr.sin_zero,SizeOf(Addr.sin_zero),0); code := WSAAsyncSelect(socketHandle, sockWindow, FMSG, cEvents); if code = 0 then Connect(socketHandle,Addr,SizeOf(TSockAddr)); //Ошибка на этой строчке if code = 0 then begin ... result := true end else begin FErrorCode := WSAGetLastError; //Здесь 10038 WSAENOTSOCK result := false; end
|
PS. WSAStartUP($0101,WSAData) сделан в секции initialization модуля |