-
X-Received: by 10.31.41.81 with SMTP id p78mr382813vkp.2.1512514005035; Tue, 05 Dec
2017 14:46:45 -0800 (PST)
X-Received: by 10.31.41.81 with SMTP id p78mr382813vkp.2.1512514005035; Tue, 05 Dec
2017 14:46:45 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-medi
a.com!news.highwinds-media.com!m31no429089qtf.0!news-out.google.com!t48ni949qtc
.1!nntp.google.com!g35no428797qtk.1!postnews.google.com!glegroupsg2000goo.googl
egroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 5 Dec 2017 14:46:44 -0800 (PST)
In-Reply-To: <6...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.48.37;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 37.47.48.37
References: <6...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4...@g...com>
Subject: Re: from blocking to nonblocking server
From: fir <p...@g...com>
Injection-Date: Tue, 05 Dec 2017 22:46:45 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 5744
X-Received-Body-CRC: 2600097416
Xref: news-archive.icm.edu.pl pl.comp.programming:211841
[ ukryj nagłówki ]W dniu wtorek, 5 grudnia 2017 17:32:33 UTC+1 użytkownik fir napisał:
> his is offtopic but maybe someone here will/would know
>
> i dont like to read a weeks on tcp and sockets as this is a lot and confusing
> (i prefer this time to spend on c/graphics etc)
>
> i got some old tcp-server (on winapi winsock2) code, that worked but it was
> not tested/inspected for being ok and was yet only working in blocking mode
>
> the code goes
>
> int SetupBlockingWinsockServer()
> {
>
> WSADATA wsaData;
> WSAStartup(MAKEWORD(2,2), &wsaData);
>
> /// Creating socket
>
> servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
>
> SOCKADDR_IN sin;
> sin.sin_family = PF_INET;
> sin.sin_port = htons(1111);
> sin.sin_addr.s_addr = INADDR_ANY;
>
> //bind
>
> int retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
>
> /// Trying to listen socket
>
> retVal = listen(servSock, 10);
>
> // Waiting for a client
>
> ServClientSock = accept(servSock, NULL, NULL); return
1;
>
>
> }
>
> (i skipped the few lines of retvalue checking for errors for clarity)
>
> my goal is just to turn it to non blocking without a lot of work but i would like
to know this is ok
>
> i checked experimentally via message boxes that it "blocks" on accept call
> (block may be euphemism a bit here as it hang real hard, when no client is run then
not only hourglass-pointer is shown, not only app gets fully unresponsible and non
redraws itself but even closing it form task manager is hard, its possible but takes
few seconds to kill)
>
> what i did :
>
> i added some line thet is supposed to set socked as nonblocked and move accept to
separate function which i call then periodically (from run frame event)
>
> int SetupBlockingWinsockServer()
> {
>
> WSADATA wsaData;
> WSAStartup(MAKEWORD(2,2), &wsaData);
>
> /// Creating socket
>
> servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
>
> SOCKADDR_IN sin;
> sin.sin_family = PF_INET;
> sin.sin_port = htons(1111);
> sin.sin_addr.s_addr = INADDR_ANY;
>
> //bind
>
> int retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
>
> /// Trying to listen socket
>
> retVal = listen(servSock, 10);
>
> // set no blocking
>
> u_long no_block=1;
> ioctlsocket(servSock,FIONBIO,&no_block);
>
> }
>
> int WaitForClientAccept()
> {
> /// Waiting for a client
>
> ServClientSock = accept(servSock, NULL, NULL);
>
> if(ServClientSock == INVALID_SOCKET) return 0;
>
>
> u_long no_block=1;
> ioctlsocket(ServClientSock,FIONBIO,&no_block);
> return 1;
>
> }
>
> this last one is as i said run periodically on server app frame and when it return
1 (it means it gett accepted connection?) i flag out both server code to not call it
more and
> client not to send more connections
>
> it seem to work but as this is my
> own slight experimentation only i would like to get pproval/confirmation
> that this is in fact ok
>
> is this ok or is there something wrong with it?
>
> (btw as a side questions, do i need those flaging out here, or if i connected i
could not bother for flaging out more sendings for connections and checks for
incomming connections? (i know it would be wastefull maybe to send it still 50 times
a second after connection was accepted but besides this waste would it work? (if that
would be work maybe sending it once a second would work as
> automatic connection reboval when something would get disconnected?)
>
> tnx for answer if someone know whats goin on in that sockets/winsock, i got not
much time for that
>
> (fir)
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)
Następne wpisy z tego wątku
- 08.12.17 09:30 Roman Tyczka
- 08.12.17 17:58 fir
- 08.12.17 18:13 fir
Najnowsze wątki z tej grupy
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
Najnowsze wątki
- 2025-03-31 Kraków => IT Expert (Network Systems area) <=
- 2025-03-31 Białystok => NMS System Administrator <=
- 2025-03-31 Częstochowa => Product Manager - Systemy infrastruktury teleinformaty
- 2025-03-31 Sąd/Sędzia odrzuca wniosek o 30d aresztu Ziobry i jedzie po PO-Komisji Sroki [i Ziobrze w GW wersji]
- 2025-03-31 Warszawa => Sales Executive / KAM <=
- 2025-03-31 Warszawa => International Freight Forwarder <=
- 2025-03-31 Re: Państewko prawka Rumunia czyli pokaz UE leworządności - lider unieważnionych wyborów niedopuszczony do powtórki
- 2025-03-31 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-03-31 Re: Kompensacja mocy biernej przy 230VAC
- 2025-03-31 Re: Kompensacja mocy biernej przy 230VAC
- 2025-03-31 Wrocław => Senior Backend Developer <=
- 2025-03-31 Białystok => Generative AI Engineer <=
- 2025-03-31 China-Kraków => Key Account Manager IT <=
- 2025-03-31 Prawne ciekawostki: Ksiądz KRK wygrał ze swoim biskupem sprawę o "naruszenie dóbr osobistych" [SN oddalił kasacje]
- 2025-03-31 Podatek od "konta wspólnego"