[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