Добрый день
Нужно установить соединение с сервером в статус 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);