-
Data: 2017-12-08 18:13:20
Temat: Re: from blocking to nonblocking server
Od: fir <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu piątek, 8 grudnia 2017 17:58:37 UTC+1 użytkownik fir napisał:
> W dniu piątek, 8 grudnia 2017 09:30:30 UTC+1 użytkownik Roman Tyczka napisał:
> > On Tue, 5 Dec 2017 14:46:44 -0800 (PST), fir wrote:
> >
> > > W dniu wtorek, 5 grudnia 2017 17:32:33 UTC+1 użytkownik fir napisał:
> > > moge dodac ze to chyba dziala ok
> > > - za to przelaczenie connecta w
> > > kliencie na nie-blokujacy chyba nie da sie tak prosto zrobic a nie
> > > moge nigdzie w google znalezc gotowego kodu jak to zrobic
> > > (a czytac o tym kilka/nascie/dziesiat godzin nie mam jakos checi bo to straszne
> > > smieci)
> >
> > Czemu po prostu nie użyjesz jakieś open sourcowej biblioteki, która to
> > załatwi od strzału? Zwłaszcza jeśli czujesz się cienki w socketach i tcp.
> >
> nie lubie dependencji, nie czuje sie cienki w socketach tylko nie mam znimi
doswiadczenia (tak jak wczesniej np z formatem PE),
> posiedzialem 3 dni i teraz czuje w zasadzie sockety mam
> mw tak samo opanowane jak uzywanie fopen/fclose/(fwrtie/fgetc etc)
>
> osiagnalem socketowe zen i jestem zadowolony
>
> (troche oczywisccie jeszze mozna by doczytac ale ogolnei dziala.. problem byl
raczej z tymz e tutoriale sa zle napisne a same to api jest tez co nieco brzydkie)
nawiasdem mowiac ten kawalek
do 'nieblokujacego' (troche wyglada raczej jak blokujacy tylko z ustawialnym
timeoutem)
znalezniony w necie
int WaitForServerConnectionUnblocked()
{
u_long no_block=1;
ioctlsocket(clientSock,FIONBIO,&no_block);
//connect to the server
// iResult = connect(client, (sockaddr*)&server, sizeof(server));
int retVal = connect(clientSock,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if( retVal == SOCKET_ERROR)
{
int iError = WSAGetLastError();
//check if error was WSAEWOULDBLOCK, where we'll wait
if(iError == WSAEWOULDBLOCK)
{
/// cout << "Attempting to connect.\n";
fd_set Write, Err;
TIMEVAL Timeout;
FD_ZERO(&Write);
FD_ZERO(&Err);
FD_SET(clientSock, &Write);
FD_SET(clientSock, &Err);
Timeout.tv_sec = 0;
Timeout.tv_usec = 30*1000;
int iResult = select(0, NULL, &Write, &Err, &Timeout);
if(iResult == 0)
{
// cout << "Connect Timeout (" << TimeoutSec << " Sec).\n";
return 0;
}
else
{
if(FD_ISSET(clientSock, &Write))
{
// cout << "Connected!\n";
return 1;
}
if(FD_ISSET(clientSock, &Err))
{
// cout << "Select error.\n";
return 0;
}
}
}
else
{
// cout << "Failed to connect to server.\n";
// cout << "Error: " << WSAGetLastError() << endl;
// WSACleanup();
return 0;
}
}
else
{
//connected without waiting (will never execute)
//cout << "Connected!\n";
return 1;
}
}
co dziwne lokalnie to dziala acz od czasu do czasu nie zawiazuje polaczenia - zdalnie
nie chcialo dzilac
jeszcze tego nie testowalem ale byc moze ten timeout tutaj ustawiony (30 ms) jest za
maly
to wogole chyba nie tak powinno wygladac, wydaje mi sie ze nalezy chyba zarzucic
connect
(ktory ma byc nieblokujacy a pozniej sprawdzac czy przyszlo info ze 'zaszedl' (jest
connected) - jesli tak to dzial to chyab powinienem to podzielic na dwie funkcje ale
musze jeszcze troche doczytac by uzupelnic zen ;c (nie wszystko na raz, ogolneie
jednak czuje sie z scketami jestem juz ok ;c)
Najnowsze wątki z tej grupy
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
Najnowsze wątki
- 2025-09-13 Korea Południowa odpowie za niewolnictwo seksualne armii USA
- 2025-09-13 Zatrzymano zabójcę Charliego Kirka
- 2025-09-13 Wrześniowe promocje na ładowarkach
- 2025-09-13 Warszawa => BI Developer <=
- 2025-09-13 Warszawa => Sales Assistant <=
- 2025-09-13 Warszawa => Lead SAP PP Consultant <=
- 2025-09-13 Jestem pod wrażeniem. Komputery bankowe w łikendy nie odpoczywają ;-)
- 2025-09-13 Lublin => Delphi Programmer <=
- 2025-09-13 Lublin => Programista Delphi <=
- 2025-09-13 SFP, 10G, simplex sc/apc
- 2025-09-13 KIA 2025r
- 2025-09-12 Rejestracja godna elektryka
- 2025-09-12 Koniec dopłat
- 2025-09-12 Odszkodowanie
- 2025-09-12 Warszawa => Senior SAP Consultant - PP area <=