Makale numarası: 227672 - Son Gözden Geçirme: 03 Kasım 2003 Pazartesi - Gözden geçirme: 3.1

Winsock arabelleği boyutu sınırla Not

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Belirtiler

Bir stili Berkeley gönderme (s, N, p,...) her zaman hemen büyük H'YE verir (üzerinde 1 MB) cinsinden bile arabellek boyutunu SO_SNDBUF ayarlandığında N'ye kadar küçüktür (Sıfır varsayılan varsayıldı) SO_SNDBUF ayarlandığında, bu sorun ayrıca olmuyor. SO_SNDBUF 0 (sıfır), sonra arama blokları doğru şekilde ayarlanmışsa. Aramayı her zaman kullanılabilir arabellek alanı N'ye ' küçük olduğunda engellemelisiniz

Neden

Bu özellik, belirli bir anda yalnızca bir zaman uyumlu gönderme yapan varolan uygulamaların çoğu performansını artırır. Bazı uygulamalar bu özelliğini yararlanabilir ve olası geçici çözüm aşağıda kullanılabilir.

Çözüm

Sarmalayıcı aşağıdaki geçici çözümü, sistem performansı amaçlar ve blokları için kabul edilebilir bir süre korur. Geçici çözümü zaten arabelleğe ve bunları varolan SO_SNDBUF ayardan çıkarır bayt sayısını tutar.
sendBlock( SOCKET s, PTR p, int cb, int f )
{
    int nSockBuf = GetSockOpt( s, SO_SNDBUF );
    if( cb <= nSockBuf )
        return send( s, p, cb, f );

    cb -= nSockBuf;                    //Subtraction takes place here.

    int nRet = send( s, p, cb, f );
    if( nRet != cb )
        return nRet;

    return cb + send( s, p+cb, nSockBuf, f );
}
				

Durum

Microsoft bu sorunun, Microsoft Windows 2000 için onaylamıştır.

Daha fazla bilgi

Bu belirtiler de varsa, çok büyük arabelleklerin geçici yukarıdaki kullanmadan bu arama türünü sağlanan bulunabilir.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Professional Edition
Anahtar Kelimeler: 
kbmt kbprb KB227672 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:227672  (http://support.microsoft.com/kb/227672/en-us/ )