Всем привет. Проблема следующая: реализовал клиент/сервер приложение на 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. Продебажить не могу поскольку этот код в шарпе вызываю |