Re[2]: Сервер виснет после первого соединения
От: Alex_v99 Россия  
Дата: 20.03.09 09:20
Оценка:
Здравствуйте, stbzh, Вы писали:

S>А точно подвисает на accept? Я бы предположил, что ты некорректно закрываешь соединение на клиенте и и з-за этого recv блокируется. Если это винда и все навтройки выстроены по умолчанию (не изменено время ожидания и соединение не отслеживает таймаут), то несколько минут винда будет думать, что соединение живое и recv не вернет 0.


Сервер под Debian etch4, клиент под Windows XP, связь через локалку. Настройки везде умолчальные. Сервер на 99% висит в accept — я логи после каждого действия в cout вывожу (выше я их постирал, чтоб не засоряли код). Да, такая деталь — сервер крутится не в основном потоке программы, а в отдельно созданном параллельном main'у.

Я и сам подозреваю, что проблема в клиенте, но вот где именно?..

Вот код клиента:

    pSocket = new CSocket();
    CString Str;
    Str = "192.168.0.22";
    int nPort = 3425;

    pSocket->Create(nPort, SOCK_STREAM, NULL);

    pSocket->Connect(Str, nPort);

    Str = "SESSION BEGIN AB5643F8865CD0\n";
    pSocket->Send(Str.GetBuffer(Str.GetLength()), Str.GetLength(), 0);
    Str = "GET STATE AB5643F8865CD0\n";
    pSocket->Send(Str.GetBuffer(Str.GetLength()), Str.GetLength(), 0);

    pSocket->Close();
    
    delete pSocket;
    pSocket = NULL;


Вроде всё по учебнику, а не работает.
WBR, Alex.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.