CAsyncSocket::SetSockOpt

bool SetSockOpt ( int nOptionName, const void * lpOptionValue, int nOptionLen, int nLevel = sol_socket );

Dönüş değeri

İşlev başarılı olursa sıfırdan farklı; Aksi halde 0 ve belirli bir hata kodu GetLastErrorçağırarak alınabilir. Üye işlev aşağıdaki hataları uygulama:

Parametreleri

nOptionName

Değeri ayarlanacak olan yuva seçeneği.

lpOptionValue

İçinde istenen seçeneğin değeri sağlanan arabellek bir işaretçi.

nOptionLen

LpOptionValue arabelleğinin bayt cinsinden boyutu.

nLevel

Seçenek tanımlandığı düzey; sol_socket ve IPPROTO_TCP sadece desteklenen düzeyleri şunlardır.

Açıklamalar

Bir soket seçeneği belirlemek için bu üye işlevini çağırın. SetSockOpt herhangi bir durumda, her tür Yuva ilişkili bir soket seçeneği için geçerli değerini ayarlar. Seçenek birden çok protokol düzeyinde bulunabilir, ancak bu belirtimi yalnızca "yuva" en üst düzeyde varolan seçenekleri tanımlar. Yayın iletileri sokete gönderilebilir ve benzeri olup olup normal veri akışında hızlandırılmış veri alma gibi soket işlemleri seçenekleri etkiler.

Soket seçenekleri iki tür vardır: Boolean seçenekleri etkinleştirmek veya devre dışı bir özellik veya davranış ve bir tamsayı veya yapısı gerektiren seçenekleri. Bir Boolean seçeneğini etkinleştirmek için sıfır olmayan bir tamsayıya lpOptionValue işaret eder. Tamsayı sıfıra eşit seçeneği lpOptionValue noktalarını devre dışı bırakmak. nOptionLen sizeof(BOOL) Boolean seçenekleri için eşit olması gerekir. Diğer seçenekler için lpOptionValue tamsayı veya nOptionLen ve seçenek için istediğiniz değeri içeren yapısı puandır tamsayı veya yapısı uzunluğu.

SO_LINGER , gönderilmemiş verileri bir yuvada sıraya ve soket kapatmak için Kapat işlevi çağrılır gerçekleştirilen eylem denetler. Daha fazla bilgi için bkz: Win32 sdk belgelerinde Windows Sockets programlama konuları.

Varsayılan olarak, bir yuva (bkz: BIND) zaten kullanımda olan bir yerel adresine bağlanamaz. Zaman zaman, ancak o "adresi bu şekilde yeniden" istenebilir. Çünkü her bağlantı yerel ve uzak adresler kombinasyonu tarafından benzersiz olarak tanımlanır, orada iki yuva, uzak adresler farklı olarak aynı yerel adresine bağlı olan hiçbir sorun.

Windows Sockets uygulanması istenen adresi zaten başka bir soket tarafından kullanılmakta olduğundan soket üzerinden bağlamak arama verilmeyen değil ki bilgilendirmek için uygulama Bind çağrısı vermeden önce so_reuseaddr soket seçeneği soket için ayarlamanız gerekir. Seçeneği yalnızca Bind çağrısı zamanında yorumlanır unutmayın: Bu nedenle varolan bir adresi değil bağlanacak olan bir soket seçeneği ayarlamak için (zararsız ama) gereksiz olan ve ayarlama veya sıfırlama seçeneğini sonra bağlama çağrısı bu etkisi veya diğer bir soket.

Bir uygulama, Windows Sockets uygulaması SO_KEEPALIVE soket seçeneği kapatarak "canlı tutma" paketlerin İletim Denetimi Protokolü (tcp) bağlantı kullanımını etkinleştirmek isteyebilir. ("Canlı tutma" paketleri hakkında daha fazla bilgi için bkz: Win32 sdk belgelerinde Windows Sockets programlama konuları .) Windows Sockets uygulaması tutma kullanımını yok: Eğer o does, kesin semantiği uygulama özgü ama rfc 1122 4.2.3.6 bölümüne uygun olmalıdır: "Requirements for Internet Hosts — iletişim katmanları." Sonuç olarak bağlantı kesilirse "tutma" hata kodu wsaenetreset için görüşme Sürüyor sokete döndürülür ve any subsequent calls wsaenotconn ile başarısız olur.

Nagle algoritma tcp_nodelay seçeneğini devre dışı bırakır. Nagle algoritması, tam boy paket gönderilebilir kadar bildirilmemiş gönderme veri arabelleğe alma bir ana bilgisayar tarafından gönderilen küçük paket sayısını azaltmak için kullanılır. Ancak, bazı uygulamalar için bu algoritma performans engel ve tcp_nodelay kapatmak için kullanılabilir. Ayarı tcp_nodelay ağ performansı üzerinde önemli bir olumsuz etkisi olabilir beri yapıyor etkisini çok iyi anlaşılmış ve istenen, sürece uygulama yazarlar tcp_nodelay ayarlamanız gerekir değil. tcp_nodelay ise sadece IPPROTO_TCPdüzey; kullandığı yuva seçeneği desteklenir diğer tüm seçenekler düzeyi sol_socket kullanın.

Bir uygulama tarafından so_debug seçeneği ayarlanmışsa, Windows Sockets tedarik çıkış hata ayıklama bilgileri bazı uygulamaları.

Aşağıdaki seçenekleri SetSockOptiçin desteklenir. LpOptionValue tarafından gönderilen veri türü tanımlar.

Değer Türü Anlamı
SO_BROADCAST BOOL Yuvadaki yayın iletilerinin iletimini sağlar.
SO_DEBUG BOOL Hata ayıklama bilgileri kaydı.
SO_DONTLINGER BOOL Gönderilmek üzere bekleyen gönderilmemiş verileri yakın blok yok. Bu seçeneğin sıfıra ayarlamak l_onoff ile SO_LINGER ayarlamak eşdeğerdir.
SO_DONTROUTE BOOL Rota yoktur: doğrudan arabirim Gönder.
SO_KEEPALIVE BOOL Tutma Gönder.
SO_LINGER struct LINGER Gönderilmemiş verileri varsa oyalanmak yakın.
SO_OOBINLINE BOOL Band dışı veri almak normal veri akışı.
SO_RCVBUF int Alır arabellek boyutu belirtin.
SO_REUSEADDR BOOL Soket zaten kullanılmakta olan bir adresi bağlanmasını sağlar. (Bkz: BIND.)
SO_SNDBUF int Göndermeleri için arabellek boyutu belirtin.
TCP_NODELAY BOOL Gönder coalescing Nagle algoritması devre dışı bırakır.

Berkeley yazılım dağıtımı (bsd) seçenekleri için SetSockOpt desteklenmiyor:

Değer Türü Anlamı
SO_ACCEPTCONN BOOL Soketi dinleme
SO_ERROR int Hata durumu ve temizleyin.
SO_RCVLOWAT int Düşük su işareti almak.
SO_RCVTIMEO int Alma zaman aşımı
SO_SNDLOWAT int Düşük su işareti Gönder.
SO_SNDTIMEO int Zaman aşımı Gönder.
SO_TYPE int Soket türü.
IP_OPTIONS IP üstbilgisi alanında seçeneklerini ayarlama.

CAsyncSocket genel bakış |nbsp; Sınıf üyeleri | Hiyerarşi çizelgesi

Ayrıca bkz: CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl

Index