> From: [email protected] On Behalf Of Raj
> Sent: Thursday, 05 August, 2010 01:06
> I will describe my code snippet below
>
> The module for connecting to server
>
> SOCKET RequestSock;
> SOCKADDR_IN ClientAddr;
> RequestSock =
> WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
I don't know much about 'OVERLAPPED' in Windows, but I think
it's something like 'nonblocking' in Unix.
> pHost = gethostbyname(pcTargetURL);
> memset(&ClientAddr,0,sizeof(ClientAddr));
> int iAddrLen = sizeof(ClientAddr);
> ClientAddr.sin_family = AF_INET;
> memcpy(&ClientAddr.sin_addr,pHost->h_addr, pHost->h_length);
> ClientAddr.sin_port = htons(atoi(pcPort));
> if(0 != connect(RequestSock,(SOCKADDR *)&ClientAddr,
> sizeof(SOCKADDR_IN)))
> {
> closesocket(RequestSock); // Connection failed
> return false;
> }
>
> WSAOVERLAPPED SendOverlapped;
> DWORD dwSendDataLen = 0;
> WSABUF ClientRequestBuf;
> WSAEVENT SendEvent[1];
> ClientRequestBuf.buf = pcData;
> ClientRequestBuf.len = strlen(pcData);
> SendEvent[0] = WSACreateEvent();
> SendOverlapped.hEvent = SendEvent[0];
> iRes =
> WSASend(RequestSock,&ClientRequestBuf,1,&dwSendDataLen,dwFlag,
> &SendOverlapped,NULL);
> // Sending data to the server
>
At this point, the send probably hasn't actually happened.
And if you call [WSA]Recv and it returns, it almost certainly
hasn't actually been done either. You probably have to do
some kind of synchronization with the .hEvent, following
whatever Windows rules are applicable.
> FYI
> pcPort = 443
> pcTargetURL = L"www.facebook.com";
> pcData = "GET https://www.facebook.com HTTP/1.0\r\n\r\n"
>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]