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);
Re: ESTABLISHED соединние
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 12.12.11 10:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день


А>Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...

А>Думал сделать через сокеты — ф-ция connect.

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


А>Подскажите что не так.


Удалённая сторона закрыла соединение. Видимо, тебя не полюбили, или просто таймаут ожидания запроса с твоей стороны. Если думал больше ~10 секунд прежде чем что-то послать, это нормальная ситуация.

А>Да и опрос состояния не представляю как делать...


http://msdn.microsoft.com/en-us/library/ms741540%28v=VS.85%29.aspx
The God is real, unless declared integer.
Re: ESTABLISHED соединние
От: abrarov Россия http://asio-samples.blogspot.com/
Дата: 12.12.11 10:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...


Offtop: a можно ли, не передавая и не получая данных, "опрашивать" TCP-соединение? Или под "опрашивать состояние конекта" имелось в виду чтение (чтение без передачи)?
Programs must be written for people to read, and only incidentally for machines to execute
Re: ESTABLISHED соединние
От: iNibbler Россия  
Дата: 23.12.11 18:18
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Добрый день


А>Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...

А>Думал сделать через сокеты — ф-ция connect.

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


А>Подскажите что не так.

А>Да и опрос состояния не представляю как делать...

Что Вы понимаете под "опрашивать состояние конекта"? Какую проблему Вы хотите в конечном итоге решить?
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.