[MFC Sockets] Problem z aplikacją kliencką

0

Witam serdecznie!!!

W VC++ pisze aplikacje kliencką TCP/IP i trafiłem na problem, to jest fragment kodu uruchamianego na guzik:

CSocket PortClient;
    char *Dane;
    UpdateData(TRUE);
    CString adres_ip;
    int nr_portu;
    CString do_wyslania;
    adres_ip = ip;
    nr_portu = port;
    do_wyslania = wiadomosc;

    int i = PortClient.Create();
    if (i == 0)
    {
        MessageBox("Nie udało się stworzyć portu","Błąd", MB_ICONERROR | MB_OK);
        return;
    }
    PortClient.Connect(adres_ip,nr_portu);
    Dane = new char[do_wyslania.GetLength()];
    Dane = do_wyslania.GetBuffer();

    PortClient.Send(Dane,do_wyslania.GetLength());
    PortClient.Close();

Problem polega na tym, że nie otwiera mi się port (wartość i = 0)
Jeśli ktoś wie co tu nie gra to proszę o info.

Tak na marginesie program ten pisze na podstawie programu klienckiego napisanego również w VC++, którego kod jest niemal identyczny (w zasadzie tylko zmienne są inne) i tamten działa a mój nie...

0

Coś chyba niezbyt poprawnie tworzysz tego socketa.

Deklaracja funkcji Create z klasy CSocket :

BOOL Create(
UINT nSocketPort = 0,
int nSocketType = SOCK_STREAM,
LPCTSTR lpszSocketAddress = NULL
);

Powinieneś wywołać raczej : .Create(numer_portu, typ_socketa (SOCK_STREAM), IP)

Wywołaj tak :

.Create(0,SOCK_STREAM,0)

// takie wywołanie otworzy któryś z wolnych portów, tych wyższego rzędu na stacji lokalnej

Jak to nie pomoże to sprawdź co zwraca Ci funkcja GetLastError

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