Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не работает shutdown().


Автор: jan 21.5.2004, 19:35
Не работает shutdown.


Вот поробовал вычитав с мсдэнки, однако не идет.(закрытие сокета и освобождение порта под него)

//зактрываю сокет и освобождаю занятое под него.
if (bind(sServ, (LPSOCKADDR)&addr, sizeof(addr))== SOCKET_ERROR)
{
WSAAsyncSelect(sServ, NULL, 0,FD_CLOSE);
shutdown(sServ, SD_SEND);

//Ругается на SD_SEND вообщем пишет ошибку.
// error C2065: 'SD_BOTH' : undeclared identifier
//Error executing cl.exe.

closesocket(sServ);
err=WSAGetLastError();
MessageBox(NULL, "Listenning Port (TCP) - is Closed now", "KURSAVI", MB_OK);
return 0;
}

Помогите пожалуйста курсач горит.


Вот как это напісано в МСДН.

To assure that all data is sent and received on a connected socket before it is closed, an application should use shutdown to close connection before calling closesocket. For example, to initiate a graceful disconnect:

Call WSAAsyncSelect to register for FD_CLOSE notification.
Call shutdown with how=SD_SEND.
When FD_CLOSE received, call recv until zero returned, or SOCKET_ERROR.
Call closesocket.
Note The shutdown function does not block regardless of the SO_LINGER setting on the socket.



Что такое и где определяется SO_LINGER сокет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)