Добрый день
Нужно установить соединение с сервером в статус 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);
Здравствуйте, Аноним, Вы писали:
А>Добрый день
А>Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...
А>Думал сделать через сокеты — ф-ция connect.
А>Но после её вызова — состояние CLOSE_WAIT...
А>Подскажите что не так.
Удалённая сторона закрыла соединение. Видимо, тебя не полюбили, или просто таймаут ожидания запроса с твоей стороны. Если думал больше ~10 секунд прежде чем что-то послать, это нормальная ситуация.
А>Да и опрос состояния не представляю как делать...
http://msdn.microsoft.com/en-us/library/ms741540%28v=VS.85%29.aspx
Programs must be written for people to read, and only incidentally for machines to execute
Здравствуйте, <Аноним>, Вы писали:
А>Добрый день
А>Нужно установить соединение с сервером в статус ESTABLISHED и, не передавая данных, опрашивать состояние конекта...
А>Думал сделать через сокеты — ф-ция connect.
А>Но после её вызова — состояние CLOSE_WAIT...
А>Подскажите что не так.
А>Да и опрос состояния не представляю как делать...
Что Вы понимаете под "опрашивать состояние конекта"? Какую проблему Вы хотите в конечном итоге решить?
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>