SORU
20 Mayıs 2010, PERŞEMBE


Linux: zaman aşımı ile yuva okumak ya da bir al var mı?

Nasıl zaman aşımı ile soketten veri okumak için deneyebilir miyim? Ben, seçin, pselect, anket, zaman aşımı bir alan var, ama onları kullanma"," tcp reno yığını.-yol hızlı tcp devre dışı bırakır biliyorum

Ben sadece fikir al kullanmaktır (, ..., MSG_DONTWAİT fd) bir döngü içinde

CEVAP
30 Mayıs 2010, Pazar


setsockopt alma işlemleri üzerinde bir zaman aşımı ayarlamak için bu işlevi kullanabilirsiniz:

SO_RCVTİMEO

Belirten zaman aşımı değerini ayarlar zaman maksimum miktarda bir giriş fonksiyon tamamlanıncaya kadar bekler. Bu ile bir timeval yapısı kabul eder saniye ve mikrosaniye sayısı nasıl sınırı belirleme giriş işlemi için beklemek tamamlayın. Alma işlemi bir bu kadar süre olmadan bloke ek veri alma olacaktır kısmi bir Kont ile iade veya hata oluştuğunu hayır [EAGAIN] veya [durum olarak ele] olarak ayarlayın veri alındı. Bu varsayılan seçeneği o gösterir, sıfırdır işlem zaman aşımına olmayacaktır alma. Bu seçenek, bir timeval yapısı alır. Tüm uygulamaları not ayarlamak için bu seçeneği sağlar.

struct timeval tv;

tv.tv_sec = 30;  /* 30 Secs Timeout */
tv.tv_usec = 0;  // Not init'ing this can cause strange errors

setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval));

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012