CAsyncSocket::SetSockOpt

BOOL SetSockOpt ( int nOptionName, const โมฆะ * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );

ส่งกลับค่า

ไม่ใช่ศูนย์ถ้าฟังก์ชันนี้จะสำเร็จ มิฉะนั้น 0 และรหัสข้อผิดพลาดเฉพาะสามารถเรียกข้อมูล โดยการเรียกGetLastError ข้อผิดพลาดต่อไปนี้ใช้ฟังก์ชันนี้สมาชิก:

พารามิเตอร์

nOptionName

ตัวเลือกของซ็อกเก็ตที่มีค่าเป็นการตั้งค่า?

lpOptionValue

ตัวชี้การบัฟเฟอร์ที่ให้ค่าสำหรับตัวเลือกที่ร้องขอ?

nOptionLen

ขนาดของบัฟเฟอร์lpOptionValueไบต์?

nLevel

ระดับที่ตัวเลือกกำหนด ระดับได้รับการสนับสนุนเฉพาะคือSOL_SOCKETและIPPROTO_TCP?

หมายเหตุ

เรียกฟังก์ชันนี้สมาชิกเพื่อตั้งค่าตัวเลือกของซ็อกเก็ต SetSockOptตั้งค่าปัจจุบันสำหรับตัวเลือกของซ็อกเก็ตที่เกี่ยวข้องกับซ็อกเก็ตทุกชนิด ที่รัฐ แม้ว่าตัวเลือกสามารถมีได้ในหลายระดับของโพรโทคอล ข้อนี้เท่านั้นกำหนดตัวเลือกที่มีอยู่ที่ระดับบนสุด "ซ็อกเก็ต" ตัวเลือกการส่งผลกระทบต่อการดำเนินการซ็อกเก็ต เช่นว่า expedited จะรับข้อมูลในสตรีมข้อมูลปกติ ว่าข้อความที่ออกอากาศสามารถส่งไปบนซ็อกเก็ต และอื่น ๆ?

มีอยู่สองชนิดตัวเลือกซ็อกเก็ต: Boolean ที่เปิดใช้งาน หรือปิดใช้งานคุณลักษณะหรือลักษณะการทำงาน และตัวเลือกตัวเลือกที่ต้องการค่าจำนวนเต็มหรือโครงสร้าง เมื่อต้องการเปิดใช้ตัวเลือกแบบบูลีนlpOptionValueชี้ไปยังจำนวนเต็มที่ไม่ใช่ศูนย์ การปิดการใช้งานจุดlpOptionValueตัวเลือกให้เป็นจำนวนเต็มเท่ากับศูนย์ nOptionLenควรจะเท่ากับsizeof(BOOL)สำหรับตัวเลือกที่บูลีน สำหรับตัวเลือกอื่น ๆlpOptionValueจุดไปยังจำนวนเต็มหรือโครงสร้างที่ประกอบด้วยค่าที่ต้องการตัวเลือก และnOptionLenคือความยาวของจำนวนเต็มหรือโครงสร้าง?

SO_LINGERควบคุมการดำเนินการที่กระทำเมื่อไม่ได้ส่งข้อมูลถูกจัดคิวบนซ็อกเก็ต และปิดฟังก์ชันเรียกว่าปิดซ็อกเก็ต ดูข้อมูลเพิ่มเติม ข้อควรพิจารณาเกี่ยวกับการเขียนโปรแกรม Windows Socketsในเอกสารประกอบ Win32 SDK?

โดยค่าเริ่มต้น ซ็อกเก็ตไม่สามารถผูก (ดูผูก) ไปอยู่ภายในเครื่องซึ่งถูกใช้อยู่แล้ว ในบางครั้ง อย่างไรก็ตาม มันอาจจะเยือน "ใช้" อยู่ในลักษณะนี้ เนื่องจากทุกการเชื่อมต่อถูกกำหนด ด้วยการรวมของที่อยู่แบบโลคัล และรีโมท มีปัญหาไม่มีสอง sockets ที่ผูกไว้กับอยู่ภายในเครื่องเดียวกันตราบใดอยู่ระยะไกลจะแตกต่างกัน?

การแจ้งการใช้งาน Windows Sockets ที่ผูกสายบนซ็อกเก็ตควรไม่จะไม่อนุญาตให้เนื่องจากอยู่ที่ต้องการแล้วใช้ซ็อกเก็ตที่อื่น แอพลิเคชันควรตั้งค่าตัวSO_REUSEADDRซ็อกเก็ตเลือกสำหรับซ็อกเก็ตก่อนการออกสายผูก หมายเหตุตัวเลือกที่ถูกแปลเท่านั้นในเวลาของการโทรที่ผูก: จึงไม่จำเป็น (แต่อันตราย) เพื่อตั้งค่าตัวเลือกบนซ็อกเก็ตซึ่งจะไม่ถูกผูกไว้ไปยังที่อยู่ที่มีอยู่ และตั้งค่า หรือการตั้งค่าตัวเลือกหลังการผูกสายมีซ็อกเก็ตอื่น ๆ หรือการไม่มีผลนี้?

แอปพลิเคชันสามารถร้องขอการเปิดให้ ใช้งาน Windows Sockets ใช้งานแพคเก็ต "รักษาการ" บน Transmission Control Protocol (TCP) การเชื่อมต่อ โดยการเปิดตัวซ็อกเก็ตSO_KEEPALIVE (ดูข้อมูลเกี่ยวกับแพคเก็ต "รักษาการ" ข้อควรพิจารณาเกี่ยวกับการเขียนโปรแกรม Windows Socketsในเอกสารประกอบ Win32 SDK.) การใช้งาน Windows Sockets ต้องไม่สนับสนุนการใช้เก็บ-alives: ถ้ามี ความหมายชัดเจนขึ้นเป็นการเฉพาะตัวของการใช้งาน แต่ควรสอดคล้องกับส่วน 4.2.3.6 1124 RFC: "ความต้องการสำหรับอินเทอร์เน็ตโฮสต์ — สื่อสารชั้น" ถ้าการเชื่อมต่อหลุดเป็นผลลัพธ์ ของ "เก็บ alives" รหัสข้อผิดพลาดWSAENETRESETจะคืนให้ติดต่อทางโทรศัพท์ได้ดำเนินการอยู่บนซ็อกเก็ต และสายใด ๆ ต่อมาจะล้มเหลวด้วยWSAENOTCONN?

ตัวเลือกTCP_NODELAYปิดการใช้งานอัลกอริทึม Nagle อัลกอริทึม Nagle ถูกใช้เพื่อลดจำนวนของแพ็คเก็ตขนาดเล็กที่ถูกส่ง โดยโฮสต์ โดยการกำหนดบัฟเฟอร์ unacknowledged ส่งข้อมูลจนกระทั่งสามารถส่งแพคเก็ตซึ่ง อย่างไรก็ตาม สำหรับโปรแกรมประยุกต์บางโปรแกรม อัลกอริทึมนี้สามารถต้านการประสิทธิภาพการทำงาน และTCP_NODELAYสามารถใช้เพื่อปิด ผู้เขียนแอพลิเคชันไม่ควรตั้งค่าTCP_NODELAYยกเว้นผลกระทบของการดำเนินการนี้เพื่อให้เป็น well-understood และที่ ต้องการ ตั้งแต่ตั้งค่าTCP_NODELAYสามารถมีผลกระทบต่อค่าลบที่สำคัญประสิทธิภาพการทำงานของเครือข่าย TCP_NODELAYเป็นการเฉพาะได้รับการสนับสนุนตัวเลือกซ็อกเก็ตซึ่งใช้ระดับIPPROTO_TCP ตัวเลือกอื่น ๆ ทั้งหมดใช้ระดับSOL_SOCKET?

ใช้งานบางอย่างของ Windows Sockets ไฟแสดงผลข้อมูลการตรวจแก้จุดบกพร่องถ้ามีการตั้งค่าตัวเลือกของSO_DEBUGโดยโปรแกรมประยุกต์?

ตัวเลือกต่อไปนี้ได้รับการสนับสนุนสำหรับSetSockOpt ชนิดระบุชนิดของข้อมูลที่ได้รับการจัดการโดยlpOptionValue?

ค่า ชนิด ความหมาย
SO_BROADCAST BOOL อนุญาตให้ส่งข้อความออกอากาศบนซ็อกเก็ต?
SO_DEBUG BOOL บันทึกข้อมูลการตรวจแก้จุดบกพร่อง?
SO_DONTLINGER BOOL ไม่บล็อกปิดรอไม่ได้ส่งข้อมูลการส่ง การตั้งค่าตัวเลือกนี้จะเท่ากับการตั้งค่าSO_LINGERกับl_onoffกำหนดเป็นศูนย์?
SO_DONTROUTE BOOL ไม่ต้องการเส้นทาง: ส่งโดยตรงไปยังอินเทอร์เฟซ?
SO_KEEPALIVE BOOL ส่งรักษา-alives?
SO_LINGER struct LINGER อู้บนปิดถ้าไม่ส่งข้อมูลอยู่?
SO_OOBINLINE BOOL ได้รับข้อมูลออกของวงดนตรีในสตรีมข้อมูลปกติ?
SO_RCVBUF int ระบุขนาดของบัฟเฟอร์สำหรับรับ?
SO_REUSEADDR BOOL อนุญาตให้ซ็อกเก็ตไปผูกไว้ไปยังที่อยู่ซึ่งถูกใช้อยู่แล้ว (ดูผูก)
SO_SNDBUF int ระบุขนาดของบัฟเฟอร์สำหรับการส่ง?
TCP_NODELAY BOOL ปิดการใช้งานอัลกอริทึม Nagle สำหรับส่ง coalescing?

ตัวเลือกการแจกจ่ายซอฟต์แวร์ของเบิร์กลีย์ (BSD) ที่ไม่ได้รับการสนับสนุนสำหรับSetSockOpt:

ค่า ชนิด ความหมาย
SO_ACCEPTCONN BOOL ซ็อกเก็ตจะฟัง
SO_ERROR int ได้รับสถานะข้อผิดพลาด และล้าง?
SO_RCVLOWAT int ได้รับเครื่องหมายน้ำต่ำ?
SO_RCVTIMEO int หมดเวลาที่ได้รับ
SO_SNDLOWAT int ส่งน้ำต่ำหมาย?
SO_SNDTIMEO int หมดเวลาส่ง?
SO_TYPE int ชนิดของซ็อกเก็ต?
IP_OPTIONS ตั้งค่าตัวเลือกเขตข้อมูลในส่วนหัวของ IP?

ภาพรวม CAsyncSocket |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)

ดูเพิ่มเติมnbspCAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl(&N)

Index