winsock Recvfrom() WSAECONNRESET แทนการบล็อก หรือ timing ออกที่ส่งกลับค่าเดี๋ยวนี้

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 263823 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

ใน Windows 2000 โปรแกรมโพรโทคอลเดตาแกรมผู้ใช้ (UDP) อาจไม่ทำงาน และอาจสร้างการตอบสนอง WSAECONNRESET

สาเหตุ

ถ้าการส่งเดตาแกรมได้โดยใช้การsendtoฟังก์ชันผลในการตอบสนอง "ICMP พอร์ตไม่สามารถเข้าถึง" และเลือกฟังก์ชันมีการตั้งค่าสำหรับ readfds โปรแกรมจะส่งกลับค่า 1 และโทรที่ตามมาไปยังrecvfromฟังก์ชันไม่ได้ทำงานกับการตอบสนองข้อผิดพลาด (10054) WSAECONNRESET ใน Microsoft Windows NT 4.0 สถานการณ์นี้ทำให้เกิดการเลือกฟังก์ชันการบล็อกหรือการหมดเวลา

การแก้ไข

เมื่อต้องการแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ Windows 2000 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
260910วิธีการขอรับ Service Pack ล่าสุดของ Windows 2000
ซ็อกเก็ต IOCTL ที่เรียกว่า "SIO_UDP_CONNRESET" ใหม่ได้ถูกนำมาใช้ใน Windows 2000 โปรแกรมต้องถูก rewritten เป็นพิเศษสำหรับ Windows 2000 เพื่อขอรับ Windows NT 4.0 เดิมเมื่อมีใช้ IOCTL นี้ ลักษณะการทำงาน windows NT 4.0, Microsoft Windows 95 และ Microsoft Windows 98 ได้ไม่มีการสนับสนุนสำหรับ IOCTL นี้ใหม่ นอกเหนือจากการเขียนใหม่โปรแกรมประยุกต์ของคุณ คุณจำเป็นต้องแก้ไขด่วนที่ถูกอ้างอิงเพิ่มเติมลงในบทความนี้

snippet รหัสต่อไปนี้อธิบายเทคนิคหนึ่งที่สามารถใช้เพื่อเรียก WSAIoctl ด้วยรหัสควบคุม SIO_UDP_CONNRESET เพื่อขอรับการทำงานเดิมของ Windows NT 4.0
DWORDdwBytesReturned = 0;
BOOLbNewBehavior = FALSE;
DWORDstatus;

// disable  new behavior using
// IOCTL: SIO_UDP_CONNRESET
status = WSAIoctl(sd, SIO_UDP_CONNRESET,
&bNewBehavior, sizeof(bNewBehavior),
                   NULL, 0, &dwBytesReturned,
                   NULL, NULL);

if (SOCKET_ERROR == status)
{
DWORD dwErr = WSAGetLastError();
if (WSAEWOULDBLOCK == dwErr)
{
// nothing to do
return(FALSE);
}
else
{
printf("WSAIoctl(SIO_UDP_CONNRESET) Error: %d\n", dwErr);
return(FALSE);
}
}
				
เมื่อต้องสามารถในการคอมไพล์โค้ดนี้ คุณต้องมี Mswsock.h ล่าสุดซึ่งรวมถึงข้อกำหนดของ SIO_UDP_CONNRESET หรือแทรกอยู่ใต้คำจำกัดความของคุณเข้ารหัสของคุณโดยตรง
// MS Transport Provider IOCTL to control
// reporting PORT_UNREACHABLE messages
// on UDP sockets via recv/WSARecv/etc.
// Path TRUE in input buffer to enable (default if supported),
// FALSE to disable.
#defineSIO_UDP_CONNRESET_WSAIOW(IOC_VENDOR,12)
				
หมายเหตุ:โปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความนี้จะไม่แก้ปัญหาการยกเว้นว่าโปรแกรมถูก rewritten ใช้ IOCTL SIO_UDP_CONNRESET ใหม่

การคอมไพล์โค้ดนี้ จำเป็นต้องมี SDK แพลตฟอร์มที่ล่าสุดที่ติดตั้งบนคอมพิวเตอร์ของคุณ ซึ่งจะพร้อมใช้งานจาก MSDN เว็บไซต์ต่อไปนี้:
http://msdn.microsoft.com

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วนเริ่มต้นของเอกสารนี้ก่อนมีแก้ไขปัญหานี้ใน Windows 2000 Service Pack 2

ข้อมูลเพิ่มเติม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการติดตั้ง Windows 2000 และ Windows 2000 ฮอตฟิกซ์ในเวลาเดียวกัน คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
249149การติดตั้ง Microsoft Windows 2000 และ Hotfix ของ Windows 2000

คุณสมบัติ

หมายเลขบทความ (Article ID): 263823 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Keywords: 
kbhotfixserver kbqfe kbbug kbfix kbwin2000presp2fix kbmt KB263823 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:263823

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com