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