Nowe posty

Autor Wątek: czy select() moze odczytac deskryptor portu?  (Przeczytany 3677 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 !