นี่เป็นคำถามเกี่ยวกับการเขียนโปรแกรม แต่ดูเหมือนจะเหมาะสมกว่าสำหรับ SuperUser มากกว่า StackOverflow
ฉันได้ติดตั้ง McAfee (รุ่นทดลองใช้ของ LiveSafe - ความปลอดภัยทางอินเทอร์เน็ต) บนพีซีของฉัน ฉันใช้โปรแกรม Python ที่ใช้ CherryPy เพื่อตั้งค่าเว็บเซิร์ฟเวอร์บน localhost (127.0.0.1) ฉันมีโปรแกรมแยกต่างหากในเครื่องเดียวกันที่ส่งคำขอไปยังโปรแกรม CherryPy
การสื่อสาร localhost นี้ล้มเหลว (ดูบันทึกด้านล่าง) เมื่อเปิดไฟร์วอลล์ McAfee และทำงานเมื่อปิด
อย่างไรก็ตามเมื่อฉันเรียกใช้เซิร์ฟเวอร์ CherryPy เป็นแอปพลิเคชันของตัวเอง (เช่นเริ่มจากพรอมต์คำสั่ง) จะทำงานได้แม้จะเปิดไฟร์วอลล์ แต่เมื่อผมให้โปรแกรมหลักของฉันเปิด CherrPy / หลาม .exe เป็นกระบวนการย่อย (ซึ่งเป็นวิธีการประยุกต์ของฉันทำงานได้ตามปกติ - หลัก "เบราเซอร์" แอพลิเคชันเปิดตัวแอพพลิเค CherryPy เป็นกระบวนการย่อย) มันไม่ได้ทำงาน
ดังนั้นเพื่อสรุป:
- แอปพลิเคชันของฉันต้องใช้เซิร์ฟเวอร์ CherryPy นี้เป็นกระบวนการย่อย
- เมื่อไฟร์วอลล์ McAfee แอ็คทีฟมันจะบล็อกการสื่อสารในพื้นที่ระหว่างแอปหลักของฉันและกระบวนการย่อย
- แต่เมื่อฉันเรียกใช้ CherryPy และแอปหลักของฉันแต่ละแอปเป็นแอปพลิเคชันระดับบนสุดของพวกเขาเอง
- ฉันพยายามทำการเปลี่ยนแปลงที่ชัดเจนในแผงควบคุม McAfee เพื่อให้มีข้อยกเว้นสำหรับชื่อโปรแกรมของฉัน (ทั้งแอปพลิเคชันหลักและแอปพลิเคชันเซิร์ฟเวอร์ CherryPy) และพอร์ตเดียวที่ใช้ในการสื่อสาร (56677) แต่ก็ไม่ได้ช่วยอะไร
ฉันได้อ่านบล็อกชุมชนของ McAfee และฉันเห็นว่ามีประวัติอันยาวนานเกี่ยวกับคำถามของการบล็อกหรือไม่บล็อก localhost จากนั้นฉันก็เห็นอะไรบางอย่างเกี่ยวกับ "การปลอมแปลงกระบวนการ" ดังนั้นฉันจึงพยายามที่จะเข้าใจว่าเหตุใดจึงปิดกั้นกระบวนการย่อยและมีวิธี (a) ในการกำหนดค่า McAfee ไม่ให้ทำในขณะที่ยังเปิดไฟร์วอลล์อยู่หรือ (b) เปิดใช้งานกระบวนการของฉันด้วยวิธีที่แตกต่างกัน การแยกย่อยกระบวนการนี้ (ฉันใช้ Win32 API CreateProcess()
เพื่อเปิดใช้ - อาจShellExecuteEx()
จะให้ผลลัพธ์ที่แตกต่างกันใช่ไหม)
ด้านล่างเป็นบันทึก CherryPy ที่แสดงว่าไม่สามารถเริ่มต้นได้
[14/Aug/2015:19:45:39] ENGINE Bus STARTING
[14/Aug/2015:19:45:39] ENGINE Set handler for console events.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread 'Autoreloader'.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread '_TimeoutMonitor'.
[14/Aug/2015:19:47:20] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.Server object at 0x02547250>>
Traceback (most recent call last):
File "cherrypy\process\wspbus.pyc", line 205, in publish
File "cherrypy\_cpserver.pyc", line 168, in start
File "cherrypy\process\servers.pyc", line 177, in start
File "cherrypy\process\servers.pyc", line 233, in wait
File "cherrypy\process\servers.pyc", line 459, in wait_for_occupied_port
IOError: Port 56677 not bound on '127.0.0.1'