Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Крэш при дисконнекте соккета 
V
    Опции темы
Sergio
  Дата 26.10.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Всем привет. Проблема следующая: реализовал клиент/сервер приложение на TCP/IP протоколе. Но когда делаю дисконнект клиент то крэш апликухи происходит.
Вот код:
Код

int winTransfer::TransferConnect(int port, char* IP)
{
    char    szBuffer[1024];
    int        i;
    struct    hostent    *host = NULL;
    char    szServerName[1024];

    FILE *file;
    file = fopen("C:\\TransferConnect_log.txt","w+");
    fprintf(file,"IP: %s\n", IP);

    strcpy(szServerName, IP);

    fprintf(file,"szServerName: %s\n", szServerName);

    // Создание сокета
    this->sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    fprintf(file,"this->sClient: %g\n", this->sClient);

    if (this->sClient == INVALID_SOCKET)
    {
        fprintf(file,"Error: %s\n", "INVALID_SOCKET");
        return 1;
    }
    // Заполнение структуры с адресом сервера и номером порта
    this->server.sin_family = AF_INET;
    this->server.sin_port = htons(27005);
    this->server.sin_addr.s_addr = inet_addr("127.0.0.1");

    // Если указано имя, то перевод символьного адреса сервера в IP
    if (this->server.sin_addr.s_addr == INADDR_NONE)
    {
        host = gethostbyname(szServerName);
        if (host == NULL)
        {
            return 1;
        }
        CopyMemory(&this->server.sin_addr, host->h_addr_list[0], host->h_length);
    }

    // Соединение с сервером
    if (connect(this->sClient, (struct sockaddr *)&this->server, sizeof(this->server)) == SOCKET_ERROR)
    {
        fprintf(file, "IP: %s\n", "SOCKET_ERROR");
        fprintf(file, "this->sClient: %g\n", this->sClient);
        fclose(file);
        return -1;
    }
    else
    {
        fprintf(file,"IP: %s\n", "SOCKET_OK");
        fclose(file);
        return 0;
    }

    fclose(file);
}

Дисконнект клиента:
Код

int winTransfer::TransferDisconnect()
{
    int error = 0;
    // Закрытие сокета после работы с потоком

    error = closesocket(this->sClient);
    this->sClient = NULL;

    if (error != 0)
        return error;
}

Помогите найти ошибку. Спасибо

P.S. Продебажить не могу поскольку этот код в шарпе вызываю

Это сообщение отредактировал(а) Sergio - 26.10.2008, 17:50
PM MAIL ICQ   Вверх
Sergio
Дата 26.10.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Ошибку нашёл. Неправильно реализован сервер
PM MAIL ICQ   Вверх
J0ker
Дата 26.10.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



я вот не понимаю, почему народ так безответственно относится к дисконнекту TCP
наверное 99% сокетов пишутся вот именно так - closesocket и все
а потом спрашивают почему не все данные пришли или почему сокеты висят на серваке в TIME_WAIT


--------------------
user posted image
PM MAIL   Вверх
Олег2005
Дата 26.10.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(Sergio @  26.10.2008,  17:17 Найти цитируемый пост)
Неправильно реализован сервер 

Что то кода сервера тут вообще не видать
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.