Witam serdeczie i z gory dziekuje za odpowiedz...
Pisze programik ktory bedzie klientem UDP (i jednoczecnie serverkiem UDP ale nie jet to wazne teraz)...
Czy jest jakas mozliwosc sprawdzenia czy na port UDP cos przyszlo (i jesli tak to odebrac) a jesli nie to isc dalej..
w moim programie
recvFrom(text, text_length, AdresZrodla, PortZrodla)
tylko ze buffor musi byc tak duzy jak pakiet to oczywiste (specyfikacja UDP) ale jesli server nic nie odpowiada to tutaj mi sie zawiesza programik.. bo ciagle slucha i slucha...
Dlatego jest mi mozliwosc sprawdzenia czy cos na port przyszlo z jakims limitem czasu
W linuxie jest takie cos (nie umie tego uzywac):
// 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(sockDesc, &ZrodloDanych);
// sockDesc to deskryptor poru
switch (select(1, &ZrodloDanych, NULL, NULL, &czas)) {
case 0: text=""; break; // przeterminowanie
case -1: throw ErrorClass(BLAD_Select); break; //blad funkcji select
default: char buf[4097];
text = "";
bzero(buf,4097);
recvFrom(buf, 4096, AdresNadawcy, PortNadawcy);
if ((AdresNadawcy == Adres) && (PortNadawcy == Port))
text.append(buf,4096);
break;
}
ale nie wiem co wstawic pod '1' w selectie, bo wg specyfikacji jest to numer najwyzszego destryptora +1 i nie wiem czy dobrze ten FileDestryptor ustawilem..
select.h jest biblioteka linuxowa