Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: czy select() moze odczytac deskryptor portu?  (Przeczytany 3654 razy)

wojczer

  • Gość
czy select() moze odczytac deskryptor portu?
« dnia: 2005-07-17, 20:05:08 »
Witam! Czy jest możliwość oglądania na linuxie np. kamer internetowych, lub np. teledysków z teledyski.interia.pl na linuxie?

bartosak

  • Gość
czy select() moze odczytac deskryptor portu?
« Odpowiedź #1 dnia: 2005-07-17, 15:07:07 »
mam tutaj na mysli czy jesli zrobie sobie socket i dostane socket destryptor to czy moge tak zrobic:

    string AdresNadawcy;
    PORT PortNadawcy;
   
    // ustawiam odpowiedni czas
    struct timeval czas;
    czas.tv_sec  = 0;
    czas.tv_usec = 500;
   
    // Ustawiam FileDestryptor jako socket ;-)
    fd_set ZrodloDanych;
    FD_ZERO(&ZrodloDanych);
    FD_SET(0, &ZrodloDanych);

    if (select(1, &ZrodloDanych, NULL, NULL, &czas)) {
        int temp;
        char buf[4097];
        text = "";
        bzero(buf,4097);
        temp = recvFrom(buf, 4096, AdresNadawcy, PortNadawcy);
        if ((AdresNadawcy == Adres) && (PortNadawcy == Port))
           text.append(buf,4096);
    }
    else text="";


Dodam ze protokol to UDP..
Chodzi mi o to ze jesli serverek nic do mnie nie odpowie (blednie wprowdzony port lub IP) to mi sie program tnie

bartosak

  • Gość
czy select() moze odczytac deskryptor portu?
« Odpowiedź #2 dnia: 2005-07-17, 17:55:50 »
Dodalem flage O_NONBLOCK
i zadzialalo a dokladniej:
fcntl(sockDesc, F_SETFL, O_NONBLOCK);

a czas na 1 sekundke i dziala !