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

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • pain975

    pain975

    27 NİSAN 2008
  • RocketJump

    RocketJump

    22 ŞUBAT 2006