Problem z deklaracja funkcji itoa_s w serverze jednowatkowym

Odpowiedz Nowy wątek
2010-05-10 22:35

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

0

Witam mam proble z funkcja itoa_s. Pracuje w Srodowisku Dev-Cpp, przy probie kompilacji w linijce :

_itoa_s(iPort,c,5,10); Wyswietla mi blad, ze funckja nie jest zadeklarowana i uzyta po raz 1, dolaczam do konsolidatora bilbioteke w2_32.lib, ale to niestety nie pomaga

#pragma comment(lib, "Ws2_32.lib")
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

using namespace std;

int main()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int iErr, iWielkosc, iNumerKlienta = 0, iPort = 7;
    char bufor[2048], cPort[5], serv[NI_MAXSERV], hostname[NI_MAXHOST];
    SOCKET sClientSock, sAcceptSock;
    struct sockaddr_in service;
    struct addrinfo *result=NULL, hints;

    wVersionRequested = MAKEWORD(2, 2);

    cout << "Zadanie 3: Serwer jednowatkowy" << endl;
    cout << "Wykonanie: Piotr Szewczyk" << endl << endl;

    iErr = WSAStartup(wVersionRequested, &wsaData);
    if(iErr != 0) 
    {                         
        cout << "Uruchomienie WSAStartup nie powiodlo sie z bledem: " << iErr;
        system("PAUSE");
        return 0;
    }

    if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
    {
        cout << "Biblioteka Winsock.dll w v2.2 nie zostala znaleziona w systemie.";
        WSACleanup();
        system("PAUSE");
        return 0;
    }

    sClientSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sClientSock == INVALID_SOCKET) 
    {
        cout << "Blad podczas tworzenia socketu: " << WSAGetLastError(); 
        WSACleanup();
        return 0;
    }

    ZeroMemory(&hints, sizeof(hints));
        hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    _itoa_s(iPort,cPort,5,10);

    iErr = getaddrinfo(NULL, cPort, &hints, &result);
    if ( iErr != 0 ) 
    {
        cout << "Wywolanie getaddrinfo nie powiodlo sie. Wystapil blad o numerze: " << iErr;
        closesocket(sClientSock);
        WSACleanup();
        return 0;
    }

    iErr = bind(sClientSock, result->ai_addr, (int)result->ai_addrlen);
    if(iErr == SOCKET_ERROR)
    {
        cout << "Bind sie nie powiodl:";
        closesocket(sClientSock);
        WSACleanup();
        return 0;
    }

    iErr = listen(sClientSock, 10 );
    if (iErr == SOCKET_ERROR)
    {
        cout << "Bład podczas nasłuchu o kodzie: " << WSAGetLastError();
        closesocket(sClientSock);
        WSACleanup();
        return 0;
    }
    while(1)
    {
        iNumerKlienta++;
        iWielkosc=sizeof(service);
        sAcceptSock = accept(sClientSock,(SOCKADDR *) &service,&iWielkosc);
        if (sAcceptSock == INVALID_SOCKET)
        {
            cout << "Polaczenie sie nie powiodlo: h " << WSAGetLastError();
            closesocket(sClientSock);
            WSACleanup();
            return 0;
        }
        else 
        {
            cout << "Polaczenie zostalo zaakceptowane";
        }
        iErr = getnameinfo((SOCKADDR *) &service, iWielkosc, hostname, sizeof(hostname), serv, sizeof(serv), NI_NUMERICSERV);
        if(iErr != 0)
        {
            cout << "Podczas pobierania nazwy klienta wystapil blad o kodzie: " << WSAGetLastError();
            closesocket(sAcceptSock);
            closesocket(sClientSock);
            WSACleanup();
            return 0;
        }
        cout << endl << "Polaczono z : " << inet_ntoa(service.sin_addr) << ":" << ntohs(service.sin_port) << " <" << hostname << ">";
        cout << "  Numer klienta: " << iNumerKlienta;
        do
        {
            iErr  = recv(sAcceptSock, bufor, sizeof(bufor),0);
            if (iErr>0)
            {
                bufor[iErr]='\0';
                cout << endl << "Odebrano " << iErr << " bajtow.";
                cout << endl << "Przyjęto slowo: " << bufor ;
                iErr = send(sAcceptSock, bufor, iErr,0);
                if(iErr==SOCKET_ERROR)
                {
                    cout << "Wyslanie wiadomosci sie nie powiodlo. Wystapil blad o kodzie: "<< WSAGetLastError();
                    closesocket(sAcceptSock);
                    closesocket(sClientSock);
                    WSACleanup();
                    return 0;
                }
            }
            else if (iErr==0)
            {
                cout << endl <<"Polaczenie zakonczone!" << endl;
            }
            else
            {
                cout << "Wystapil blad podczas odbierania wiadomosci.";
                closesocket(sAcceptSock);
                closesocket(sClientSock);
                WSACleanup();
                return 0;

            }
        }while(iErr > 0);
    }

    system("PAUSE");
    closesocket(sAcceptSock);
    closesocket(sClientSock);
    WSACleanup();
    return 0;
}

Pozostało 580 znaków

2010-05-11 09:36

Rejestracja: 14 lat temu

Ostatnio: 3 godziny temu

0

_itoa_s to bezpieczniejsza wersja funkcji itoa w wydaniu microsoftu.

Pozostało 580 znaków

2010-05-12 20:43

Rejestracja: 13 lat temu

Ostatnio: 1 rok temu

0

i ws2_32.lib nie ma tutaj nic do gadania.. itoa i jej pochodne leża w crt jesli mnie pamiec nie myli


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0