สร้างข้อผิดพลาดการหมดเวลาการเชื่อมต่อปลอม


291

ฉันมีข้อบกพร่องในซอฟต์แวร์ของเราที่เกิดขึ้นเมื่อฉันได้รับการหมดเวลาเชื่อมต่อ ข้อผิดพลาดเหล่านี้เกิดขึ้นน้อยมาก (โดยปกติเมื่อการเชื่อมต่อของฉันถูกตัดโดยเครือข่ายภายใน) ฉันจะสร้างเอฟเฟกต์แบบนี้ได้อย่างไรเพื่อให้ฉันสามารถทดสอบซอฟต์แวร์ของเราได้?

หากมีความสำคัญแอปจะถูกเขียนใน C ++ / MFC โดยใช้คลาส CAsyncSocket

แก้ไข:

ฉันได้ลองใช้โฮสต์ที่ไม่มีอยู่จริงและฉันได้รับข้อผิดพลาดของซ็อกเก็ต:

WSAEINVAL (10022) อาร์กิวเมนต์ไม่ถูกต้อง

ความพยายามครั้งต่อไปของฉันคือการใช้คำแนะนำของAlexanderในการเชื่อมต่อกับพอร์ตอื่นเช่น 81 (บนเซิร์ฟเวอร์ของฉันเอง) มันใช้งานได้ดีมาก เหมือนกับการเชื่อมต่อที่หายไป (รอ 60 วินาทีจากนั้นเกิดข้อผิดพลาด) ขอบคุณ!


สวัสดีมาร์คฉันพยายามแก้ปัญหาที่เหมาะกับคุณ แต่สิ่งที่ฉันได้รับคือ# 503 (ไม่พร้อมให้บริการ) ไม่ควรเป็นหนึ่งในข้อผิดพลาด# 504 (การหมดเวลาเกตเวย์), # 599 (ข้อผิดพลาดการหมดเวลาเชื่อมต่อเครือข่าย), # 598 (ข้อผิดพลาดการหมดเวลาการอ่านผ่านเครือข่าย)
CoDe

คำตอบ:


297

เชื่อมต่อกับโฮสต์ที่มีอยู่ แต่ไปยังพอร์ตที่ถูกบล็อกโดยไฟร์วอลล์ที่ปล่อยแพ็คเก็ต TCP SYN ตัวอย่างเช่น www.google.com:81


6
คำตอบนี้ง่ายและทำงานได้เหมือนคำตอบของ @ emu ด้านล่าง ฉันเข้าใจคำตอบนี้ไม่ได้ตั้งใจจะแนะนำให้ใช้ google.com:81 แต่ประเด็นที่นี่คือการใช้พอร์ตอื่นที่ถูกบล็อก ดังนั้นคุณสามารถใช้ <your-own-ip>: <blocked-port> ได้ตลอดเวลา
James Selvakumar

6
นอกจากจะเป็นเซิร์ฟเวอร์ของคุณเองแล้วยังเป็นการโจมตีเซิร์ฟเวอร์อื่น ๆ เพื่อการทดสอบของคุณ ใช้วิธีแก้ปัญหาแบบอารยะเช่นเดียวกับนกอีมูที่กล่าวถึงด้านล่างโดยกดที่อยู่ IP ที่ไม่สามารถกำหนดเส้นทางได้เช่น 10.255.255.1 หรือตั้งค่าเซิร์ฟเวอร์เสมือนของคุณเองเพื่อการทดสอบ
zeeshan

2
ฉันคิดว่า Google อาจบล็อกพอร์ตนี้ เมื่อฉันทดสอบด้วย Chrome ฉันแค่ "เซิร์ฟเวอร์ไม่พร้อมใช้งาน" เมื่อฉันใช้เคล็ดลับของ @ emu ด้านล่างการเชื่อมต่อจะหยุดทำงานอย่างที่คาดไว้ ฉันพลาดอะไรไปรึเปล่า?
เริ่ม

OP บอกว่าเขาเชื่อมต่อกับพอร์ต 81 บนเซิร์ฟเวอร์ของเขาและหมดเวลา ที่ทำงานให้ฉันด้วย โซลูชันของ emu ให้ฉัน UnknownHostException บน Android
Barry Fruitman

2
วิธีนี้จะทำให้การเชื่อมต่อถูกปฏิเสธไม่หมดเวลา
เมห์

425

เชื่อมต่อกับที่อยู่ IP ที่ไม่สามารถกำหนดเส้นทางได้เช่น 10.255.255.1


12
Idem และฉันคิดว่านี่เป็นคำตอบที่ดีกว่าเนื่องจาก google.com:81 อาจเข้าถึงได้ในหนึ่งวัน
Gui13

138
... และเนื่องจากการส่งแพ็คเก็ตแบบสุ่มไปยังเซิร์ฟเวอร์ของผู้อื่นจากการทดสอบหน่วยของคุณนั้นเป็นสิ่งที่หยาบคาย
Glenn Maynard

15
สิ่งนี้จะไม่ทำงาน ตัวอย่างเช่นด้วย Python urllibสิ่งนี้จะส่งคืนข้อยกเว้น 'ไม่มีเส้นทางสู่โฮสต์' FYI
Mike Shultz

8
10.0.0.0, 10.255.255.255, 172.16.0.0, 172.31.255.255, 192.168.0.0, 192.168.255.255 ทั้งหมดนี้ไม่สามารถกำหนดเส้นทางได้
rajesh_kw

4
ข้อผิดพลาด "ไม่มีเส้นทางสู่โฮสต์" ที่กล่าวถึงโดย @FHI โดยทั่วไปจะปรากฏในสองเงื่อนไข: (a) เมื่อคุณลองเชื่อมต่อกับโฮสต์ที่ไม่สามารถเข้าถึงได้ใน LAN ท้องถิ่นของคุณ (ความหมายจะไม่ตอบแบบสอบถาม ARP ดังนั้นโดยทั่วไป " การหมดเวลา ARP ") และ (b) เมื่อเราเตอร์ส่งคืนข้อผิดพลาด ICMP ที่สอดคล้องกัน กรณีแรกเกิดขึ้นหากคุณอยู่ในซับเน็ตเดียวกันกับ IP ส่วนตัวที่คุณทดสอบ กรณีที่สองหากเราเตอร์ไม่รู้วิธีกำหนดเส้นทางแพ็กเก็ตของคุณไปยังปลายทาง แต่ในบางกรณีพวกเขาเพียงแค่วางแพ็กเก็ตโดยไม่ส่งข้อผิดพลาด ICMP
Ale

47

หากคุณอยู่บนเครื่องยูนิกซ์คุณสามารถเริ่มฟังพอร์ตโดยใช้ netcat:

nc -l 8099

จากนั้นแก้ไขบริการของคุณเพื่อเรียกสิ่งที่มันมักจะทำกับพอร์ตนั้นเช่นhttp: // localhost: 8099 / some / sort / of / endpoint

จากนั้นบริการของคุณจะเปิดการเชื่อมต่อและเขียนข้อมูล แต่จะไม่ได้รับการตอบกลับและจะให้การอ่านนอกเวลา (แทนที่จะเป็นการปฏิเสธการเชื่อมต่อ)


1
มันมีประโยชน์เพราะคุณสามารถดูว่าข้อมูลใดที่แอปพลิเคชันของคุณกำลังพุช คุณสามารถตรวจสอบว่าใบสมัครของคุณกำลังขอคำตอบหรือไม่
พอล

นี่เป็นความจริงสำหรับการนำทางไปยังจุดสิ้นสุดบางอย่างตามที่กล่าวไว้ แต่ถ้าฉันพยายามเชื่อมต่อด้วยวิธีอื่นมันจะทำให้การเชื่อมต่อถูกปฏิเสธอย่างรวดเร็วซึ่งไม่ใช่พฤติกรรมที่ฉันพยายามเยาะเย้ยในตอนนี้
AlanSE

@ AlanSE - คุณหมายถึงอะไรอีก? คุณสามารถมีอะไรก็ได้หลังจากหมายเลขพอร์ต netcat จะไม่สนใจเนื่องจากไม่มีสิ่งใดที่จะจัดการกับ URL ใด ๆ
Tom Chamberlain

@ TomChamberlain โอ้รอฉันอาจรู้ว่าฉันทำอะไรผิด ฉันพยายามจำลองการหมดเวลาเชื่อมต่อ ssh ดังนั้นฉันจึงให้ localhost พอร์ต 8099 แต่ก่อนหน้านี้ฉันไม่ได้ให้ชื่อผู้ใช้ดังนั้นถ้าฉันเพิ่งใส่อะไรssh alanse@localhost -p 8099ลงไปมันดูเหมือนว่าจะเป็นอย่างนั้น
AlanSE

7
เพื่อทดสอบการหมดเวลาการเชื่อมต่อที่ระดับซ็อกเก็ตตรึงกระบวนการ nc ด้วยkill -STOP <pid>(หรือเพียงแค่ CTRL-Z มันโดยไม่ต้องใส่พื้นหลัง) ระบบจะทำหน้าที่เสมือนว่าเซิร์ฟเวอร์กำลังทำงานอยู่ แต่รอให้เซิร์ฟเวอร์ยอมรับการเชื่อมต่อทำให้การเชื่อมต่อหมดเวลา (errno 110)
philant

27

URL ต่อไปนี้จะให้ระยะหมดเวลาและรวมคำตอบที่ดีที่สุดของ @Alexander และ @ Emu ไว้ด้านบน:

http://example.com:81

การใช้example.com:81เป็นการปรับปรุงคำตอบของ Alexander เนื่องจาก example.com สงวนไว้โดยมาตรฐาน DNS ดังนั้นจึงไม่สามารถเข้าถึงได้ซึ่งแตกต่างจากgoogle.com:81นี้ซึ่งอาจเปลี่ยนแปลงได้หาก Google รู้สึกชอบ นอกจากนี้เนื่องจากexample.comถูกกำหนดให้ไม่สามารถเข้าถึงคุณจะไม่ท่วมเซิร์ฟเวอร์ของ Google

ฉันว่ามันเป็นการปรับปรุงคำตอบของ @ emu เพราะจำได้ง่ายกว่ามาก


2
ขณะนี้ฉันเห็นexample.comการแก้ไขเป็น 93.184.216.34 และจริง ๆ แล้วใช้ HTML สั้น ๆ เพื่ออธิบายว่าเป็นโดเมนตัวอย่าง ... พอร์ต 81 ยังไม่ตอบสนอง
Beni Cherniavsky-Paskin

คำถามคือจริง ๆ ว่าควรจะใช้ example.com ในลักษณะนั้นหรือไม่ เฉพาะในกรณีที่พวกเขาทำให้มันเป็นอิสระอย่างเป็นทางการที่จะถูกน้ำท่วมด้วยแพ็คเก็ตทดสอบโดเมนนี้ดีกว่าโดเมนเชิงพาณิชย์อื่น การใช้โดเมนเพื่อจุดประสงค์ดังกล่าวโดยไม่ได้รับอนุญาตถือเป็นเรื่องผิดจรรยาบรรณในการพูดอย่างน้อยที่สุดถ้าไม่ใช่เรื่องผิดกฎหมาย พิจารณาใช้httpstat.usเป็น @AndyTheEntity ซึ่งชี้ให้เห็นในคำตอบของเขา
Manuel

@Manuel คุณไม่มีจุด ... example.comไม่ใช่โดเมนการค้าเป็นหนึ่งในไม่กี่ชื่อโดเมนที่ระบุอย่างชัดเจนว่าไม่สามารถใช้งานได้ ไม่มีใครสามารถเป็นเจ้าของexample.comและเราเตอร์ DNS รู้ว่าไม่เคยมีเส้นทางไปยังที่อยู่จริง ดังนั้นจึงไม่มีค่าใช้จ่ายทุกครั้งที่เซิร์ฟเวอร์ไม่มีอะไรผิดปกติในการใช้งาน
speedplane

@speedplane IANA example.comเป็นเจ้าของโดเมนตามระเบียบและรักษาเว็บเซิร์ฟเวอร์ให้หน้าเว็บอธิบายวัตถุประสงค์ของ มีโครงสร้างพื้นฐานด้านหลังโดเมนดังนั้นทุกคำขอจะมีค่าใช้จ่ายเงิน IANA การใช้งานที่ได้รับอนุญาตมีการอ้างอิงใน RFC 2606 และ RFC 6761 คุณไม่สามารถใช้โดเมนเพื่อวัตถุประสงค์ใดก็ตามที่คุณต้องการเช่นfloddingพวกเขาแทนที่จะเป็นเซิร์ฟเวอร์อื่นตามที่คุณพูดถึง การอ้างสิทธิ์ของคุณexample.com is defined to be unreachableไม่ถูกต้องสามารถเข้าถึงได้ พอร์ต 81 ไม่สามารถเข้าถึงได้ในตอนนี้ แต่ในอนาคตจะมีการกำหนดไว้ที่ใด
Manuel

RFC ที่คุณชี้ไปยังอนุญาตเฉพาะสำหรับการทดสอบ DNS พวกเขาแนะนำให้คุณใช้.testโดเมนระดับบนสุดแทนexample.comแต่โดเมนเหล่านี้มีการตั้งค่าอย่างชัดเจนเพื่อจุดประสงค์นี้ ใช่มันอาจเสียค่าใช้จ่ายเล็กน้อยกับ IANA แต่นี่เป็นบริการที่พวกเขาให้บริการ ค่าธรรมเนียม DNS ของเราจ่ายให้
speedplane

23

คำตอบที่ดีมากมาย แต่ทางเลือกที่สะอาดที่สุดน่าจะเป็นบริการนี้

http://httpstat.us/504?sleep=60000

คุณสามารถกำหนดค่าระยะเวลาการหมดเวลา (สูงสุด 230 วินาที) และรหัสส่งคืนในที่สุด


16

คุณสามารถใช้ Python REPL เพื่อจำลองการหมดเวลาใช้งานในขณะที่รับข้อมูล (เช่นหลังจากการเชื่อมต่อสำเร็จแล้ว) ไม่มีอะไรนอกจากการติดตั้ง Python มาตรฐานเป็นสิ่งจำเป็น

Python 2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        
>>> s.bind(('localhost', 9000))
>>> s.listen(0)
>>> (clientsocket, address) = s.accept()

ตอนนี้รอการเชื่อมต่อเข้ามา localhost:9000เชื่อมต่อสิ่งที่คุณต้องการที่จะทดสอบ เมื่อคุณทำเช่นนั้นงูหลามจะยอมรับการเชื่อมต่อและaccept()จะส่งคืนมัน ถ้าคุณส่งข้อมูลใด ๆ ผ่านซ็อกเก็ตที่โทรมาควรจะหมดเวลาในช่วงต่อไปclientsocketrecv()


ไม่ได้ผลสำหรับฉัน มีบางอย่างขาดหายไป บางทีs.listen(5)ก่อนs.accept()?
bmaupin

@bmaupin ฟังดูสมเหตุสมผลฉันเดาว่าฉันลืมไปแล้ว แก้ไขได้ในขณะนี้ (แต่มีคิวงานในมือ 0) ขอบคุณ!
Henrik Heimbuerger

1
ฉันสามารถใส่ฟังและยอมรับส่วนต่าง ๆ ในwhile True:ลูปและดูเหมือนว่าจะเป็นปลายทางการหมดเวลาที่ดีที่น่าเชื่อถือสำหรับการทดสอบ
AlanSE

2
มันทำงานได้ แต่ให้ "อ่านหมดเวลา" ข้อผิดพลาดที่ไม่ได้เป็นเช่นเดียวกับ "หมดเวลาเชื่อมต่อ"
timur

13
  • 10.0.0.0
  • 10.255.255.255
  • 172.16.0.0
  • 172.31.255.255
  • 192.168.0.0
  • 192.168.255.255

สิ่งเหล่านี้ไม่สามารถกำหนดเส้นทางได้


2
(ดังที่ฉันได้แสดงความคิดเห็นกับคำตอบที่ยอมรับ) เมื่อฉันทดสอบ XMLHttpRequest ใน Node.js การเชื่อมต่อ10.0.0.0และเริ่มต้น10.255.255.255ข้อผิดพลาด EACCES แทนที่จะหมดเวลา 10.255.255.1, 172.16.0.0, 172.31.255.255, 192.168.0.0และ192.168.255.255ไม่ได้หมดเวลาอย่างไร
เจมี่เบิร์ช

9

ฉันต้องการที่จะชี้ให้เห็นความสนใจของทุกคนที่จะpathod

ด้วย config (นำมาจากตัวอย่าง) 200:b@100:drคุณจะได้รับการเชื่อมต่อแบบสุ่ม


1
ไม่เหมือนกับการหมดเวลา
dentarg

8

วิธีแก้ไขปัญหาซอฟต์แวร์:

ติดตั้งเซิร์ฟเวอร์ SSH บนแอพพลิเคชันเซิร์ฟเวอร์ จากนั้นใช้ซ็อกเก็ตทันเนลในการสร้างลิงค์ระหว่างพอร์ตท้องถิ่นของคุณและพอร์ตระยะไกลบนแอพพลิเคชันเซิร์ฟเวอร์ คุณสามารถใช้เครื่องมือไคลเอ็นต์ ssh เพื่อทำเช่นนั้น ให้แอปพลิเคชันไคลเอนต์ของคุณเชื่อมต่อกับพอร์ตในเครื่องของคุณแทน จากนั้นคุณสามารถแบ่งช่องสัญญาณซ็อกเก็ตตามความประสงค์เพื่อจำลองการหมดเวลาเชื่อมต่อ


4

หากคุณต้องการใช้การเชื่อมต่อที่ใช้งานอยู่คุณสามารถใช้http://httpbin.org/delay/#โดยที่ # คือเวลาที่คุณต้องการให้เซิร์ฟเวอร์รอก่อนที่จะส่งการตอบกลับ ตราบใดที่การหมดเวลาของคุณสั้นกว่าความล่าช้า ... ควรจำลองผลกระทบ ฉันใช้มันเรียบร้อยแล้วกับแพ็คเกจร้องขอของหลาม

คุณอาจต้องการแก้ไขคำขอของคุณหากคุณกำลังส่งสิ่งที่ละเอียดอ่อน - ไม่ทราบว่าเกิดอะไรขึ้นกับข้อมูลที่ส่งถึงพวกเขา


แม้ว่าสูงสุด 10 วินาที (หากคุณป้อนตัวเลขที่สูงกว่าจะตอบกลับหลังจาก 10 วินาที)
Harry Wood

2

มีบริการที่ช่วยให้คุณสร้าง timeouts ดั้งเดิมโดยการเรียก API ที่คุณระบุว่าจะใช้เซิร์ฟเวอร์นานแค่ไหนในการตอบกลับ การหมดเวลาของเซิร์ฟเวอร์บน macgyver เป็นตัวอย่างของบริการดังกล่าว

ตัวอย่างเช่นหากคุณต้องการทดสอบคำขอที่ใช้เวลา 15 วินาทีในการตอบกลับคุณเพียงแค่ส่งคำขอไปยัง macgyver API

JSON ส่วนของข้อมูล:

{
    "timeout_length": 15000
}

การตอบสนองของ API (หลังจาก 15 วินาที):

{
    "response": "ok"
}

โปรแกรมการหมดเวลาของเซิร์ฟเวอร์บน macgyver
https://askmacgyver.com/explore/program/server-timeout/3U4s6g6u


1

คุณอาจติดตั้งไดรเวอร์ Microsoft ลูปแบ็คที่จะสร้างส่วนต่อประสานที่แยกต่างหากสำหรับคุณ จากนั้นคุณสามารถเชื่อมต่อกับบริการของคุณ (โฮสต์ของคุณเอง) จากนั้นในการเชื่อมต่อเครือข่ายคุณสามารถปิด / เปิดใช้งานอินเทอร์เฟซดังกล่าว ...


1

แม้จะยังไม่ชัดเจนว่า OP ต้องการทดสอบใด: มีความแตกต่างระหว่างการพยายามเชื่อมต่อกับโฮสต์ / พอร์ตที่ไม่มีอยู่และหมดเวลาของการเชื่อมต่อที่สร้างไว้แล้ว ฉันจะไปกับ Rob และรอจนกว่าการเชื่อมต่อจะทำงานและดึงสายเคเบิล หรือ - เพื่อความสะดวก - ให้เครื่องเสมือนทำงานเป็นเซิร์ฟเวอร์ทดสอบ (ที่มีเครือข่ายบริดจ์) และเพียงปิดการใช้งานอินเทอร์เฟซเครือข่ายเสมือนเมื่อทำการเชื่อมต่อเสร็จแล้ว


1

เทคนิคที่ฉันใช้บ่อยครั้งเพื่อจำลองการหมดเวลาการเชื่อมต่อแบบสุ่มคือการใช้การส่งต่อพอร์ตโลคอล ssh

ssh -L 12345:realserver.com:80 localhost

สิ่งนี้จะส่งต่อทราฟฟิกบนโลคัลโฮสต์: 12345 ไปยัง realserver.com:80 คุณสามารถวนรอบนี้ในเครื่องท้องถิ่นของคุณเองเช่นกันหากคุณต้องการ:

ssh -L 12345:localhost:8080 localhost

ดังนั้นคุณสามารถชี้แอปพลิเคชันของคุณไปที่ localhost และพอร์ตที่กำหนดเองและทราฟฟิกจะถูกส่งไปยังโฮสต์เป้าหมาย: พอร์ต จากนั้นคุณสามารถออกจากเชลล์นี้ (คุณอาจต้อง ctrl + c เชลล์หลังจากที่คุณออก) และมันจะฆ่าการส่งต่อซึ่งทำให้แอปของคุณเห็นการเชื่อมต่อขาดหาย


0

เสียบสายเคเบิลเครือข่ายของคุณเข้ากับสวิตช์ที่ไม่มีการเชื่อมต่อ / สายเคเบิลอื่น ที่ควรจะทำงาน imho


0

มีกลวิธีสองสามอย่างที่ฉันเคยใช้ในอดีตเพื่อจำลองปัญหาเครือข่าย

  1. ดึงสายเคเบิลเครือข่ายออก
  2. ปิดสวิตช์ (โดยเฉพาะกับสวิตช์ที่คอมพิวเตอร์ต่ออยู่กับพลังงานดังนั้นเครื่องจึงยังคงเป็น "การเชื่อมต่อเครือข่าย") ระหว่างเครื่องของคุณกับเครื่อง "เป้าหมาย"
  3. ใช้งานซอฟต์แวร์ไฟร์วอลล์บนเครื่องเป้าหมายที่ปล่อยข้อมูลที่ได้รับอย่างเงียบ ๆ

หนึ่งในแนวคิดเหล่านี้อาจให้วิธีการสร้างสถานการณ์ที่คุณต้องการโดยไม่ตั้งใจ


0

ขึ้นอยู่กับซอฟต์แวร์ไฟร์วอลล์ที่คุณติดตั้ง / พร้อมใช้งานคุณควรจะสามารถบล็อกพอร์ตขาออกและขึ้นอยู่กับการตั้งค่าไฟร์วอลล์ของคุณเพียงแค่วางแพ็กเก็ตการร้องขอการเชื่อมต่อ ไม่มีการร้องขอการเชื่อมต่อไม่มีการเชื่อมต่อหมดเวลาใช้งาน นี่อาจจะทำงานได้ดีขึ้นหากใช้ในระดับเราเตอร์ (พวกเขามักจะวางแพ็กเก็ตแทนการส่งรีเซ็ตหรืออะไรก็ตามที่เทียบเท่ากับสถานการณ์) แต่ก็มีซอฟต์แวร์แพคเกจที่ทำเคล็ดลับเช่นกัน


0

สิ่งที่ง่ายที่สุดที่จะวางการเชื่อมต่อโดยใช้CurrPorts

อย่างไรก็ตามในการทดสอบรหัสการจัดการข้อยกเว้นของคุณคุณอาจจะต้องพิจารณาสรุปรหัสการเชื่อมต่อเครือข่ายของคุณและเขียน stub, mock หรือ decorator ที่แสดงข้อยกเว้นตามต้องการ จากนั้นคุณจะสามารถทดสอบตรรกะการจัดการข้อผิดพลาดของแอปพลิเคชันโดยไม่ต้องใช้เครือข่ายจริง


ด้วย CurrPorts ฉันดูเหมือนจะสามารถปิดการเชื่อมต่อเท่านั้น (ซึ่งทำให้เกิดการrecv()ล้มเหลวทันทีถัดไป) แต่ไม่สามารถหาวิธีจำลองการหมดเวลา (เช่นไม่มีการถ่ายโอนข้อมูลเพิ่มเติม แต่การเชื่อมต่อยังคงเปิดอยู่)
Henrik Heimbuerger

ฉันชื่นชมคำตอบนี้สำหรับการแนะนำการทดสอบหน่วยที่ข้อยกเว้นการเชื่อมต่อ mocks ตามความต้องการ
Danny Bullis

0

ฉันมีปัญหาตามบรรทัดเดียวกับที่คุณทำ เพื่อทดสอบพฤติกรรมซอฟต์แวร์ฉันเพิ่งถอดสายเคเบิลเครือข่ายในเวลาที่เหมาะสม ฉันต้องตั้งจุดพักให้ถูกต้องก่อนที่จะถอดปลั๊กสายเคเบิล

ถ้าฉันทำมันอีกครั้งฉันจะเอาสวิตช์ (ปุ่มกดชั่วขณะหนึ่งปรกติปิด) ลงในสายเคเบิลเครือข่าย

หากการตัดการเชื่อมต่อทางกายภาพทำให้เกิดลักษณะการทำงานที่แตกต่างกันคุณสามารถเชื่อมต่อคอมพิวเตอร์ของคุณเข้ากับฮับราคาถูกและใส่สวิตช์ที่กล่าวถึงข้างต้นระหว่างฮับและเครือข่ายหลักของคุณ

- แก้ไข - ในหลายกรณีคุณจะต้องเชื่อมต่อเครือข่ายทำงานจนกว่าคุณจะถึงจุดหนึ่งในโปรแกรมของคุณจากนั้นคุณจะต้องยกเลิกการเชื่อมต่อโดยใช้หนึ่งในข้อเสนอแนะมากมาย


0

สำหรับฉันวิธีที่ง่ายที่สุดคือการเพิ่มเส้นทางแบบคงที่บนเราเตอร์สำนักงานตามเครือข่ายปลายทาง เพียงกำหนดเส้นทางการรับส่งข้อมูลไปยังโฮสต์ที่ไม่ตอบสนอง (เช่นคอมพิวเตอร์ของคุณ) และคุณจะได้รับคำขอหมดเวลา

สิ่งที่ดีที่สุดสำหรับฉันคือเส้นทางแบบคงที่สามารถจัดการผ่านเว็บอินเตอร์เฟสและเปิด / ปิดการใช้งานได้อย่างง่ายดาย


-1

คุณสามารถลองเชื่อมต่อกับหนึ่งในเว็บไซต์ที่รู้จักกันดีในพอร์ตที่อาจไม่พร้อมใช้งานจากภายนอก - 200 ตัวอย่างเช่น ไฟร์วอลล์ส่วนใหญ่ทำงานในโหมด DROP และจะจำลองการหมดเวลาสำหรับคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.