ESTABLISHED соединние
От: Аноним  
Дата: 12.12.11 10:17
Оценка:
Добрый день

Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...
Думал сделать через сокеты — ф-ция connect.

Но после её вызова — состояние CLOSE_WAIT...

Подскажите что не так.
Да и опрос состояния не представляю как делать...

SOCKET nsWsa::nsEstablish::Create(LPCSTR szServer, u_short port) {
   DWORD dwErrCode = NO_ERROR;

   // Create a SOCKET for connecting to server
   SOCKET hSocket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
   BOOL bRes = (INVALID_SOCKET != hSocket);
   if (!bRes) {
      dwErrCode = ::WSAGetLastError();
   } else {
      //// The sockaddr_in structure specifies the address family, IP address, and port of the server to be connected to.
      //SOCKADDR_IN client;
      //client.sin_family = AF_INET;
      //client.sin_addr.s_addr = inet_addr("127.0.0.1");
      //client.sin_port = htons( 12058 );

      //// Connect to server.
      //bRes = (SOCKET_ERROR != ::bind(hSocket, (SOCKADDR*)&client, sizeof(client)));
      //if (!bRes) {
      //   dwErrCode = ::WSAGetLastError();
      //} else
      {
         SOCKADDR_IN serverAdr;
         serverAdr.sin_family = AF_INET;
         serverAdr.sin_addr.s_addr = inet_addr(szServer);
         serverAdr.sin_port = htons( port );

         bRes = (SOCKET_ERROR != ::connect(hSocket, (SOCKADDR*)&serverAdr, sizeof(serverAdr)));
         if (!bRes) {
            dwErrCode = ::WSAGetLastError();
         } else {
            //const UINT bufSize = 1;
            //CHAR buff[bufSize];
            //int iRes = ::send(hSocket, buff, bufSize, 0);   bRes = (SOCKET_ERROR != iRes); 
            //if (!bRes) {
            //   dwErrCode = ::WSAGetLastError();
            //}
         }
      }
   }

   ::SetLastError(dwErrCode);
   return bRes ? hSocket : NULL;
}

Вызываю так
SOCKET hSocket = nsWsa::nsEstablish::Create("ya.ru", 80);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.