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)