Witam wszystkich mam pytanie załóżmy że tworze jakiś program w perlu który łączy się ze stroną internetową np google za pomocą IO::Socket w perlu no to klepie sobie
Kod:
$sock=new IO::Socket::INET->new(
PeerPort=>'80',
Proto=> 'tcp',
PeerAddr=>'173.194.35.191',
Timeout=> '40') or die
Odpala się gniazdo i następuje podłączenie do strony www (czy podanego hosta na port 80 jak kto woli) teraz wysyłam do otworzonego gniazda dane które ma wysłać no to wpisuje kod:
Kod:
$sock->send("GET / HTTP/1.1\r\n...");
kolejno odczytuje odpowiedź od servera
Kod:
$sock->recv($zmienna,1024);
no i tu zaczyna się mój dylemat gdyż tak naprawdę użycie opcji recv wiąże się z zablokowaniem gniazda gdy nie ma odpowiedzi gniazdo przechodzi w tryb nasłuchu i czeka na odpowiedź aż do momentu w którym ono przyjdzie z czego nie jestem zadowolony czy da rade zrobić by gniazdo się nie blokowało tzn używam recv i nie ma odpowiedzi funkcja wywołana zwraca -1 który oznacza ze odpowiedź jeszcze nie przyszła i wykonuje sobie dalsza część kodu ?
W C++ jest taka możliwość dzięki której gniazdo nie ma prawa się zablokować czy istnieje taka możliwość w Perlu ?
Mam nadzieję że nie pomieszałem tego za bardzo i z góry dziękuje za odpowiedzi.