การเปิดซ็อกเก็ตผ่านการเชื่อมต่อ RS232

ฉันมีโปรแกรม 'เซิร์ฟเวอร์ C#' ที่ฟัง '127.0.0.1' พอร์ต 5500 โดยใช้ซ็อกเก็ต .NET และฉันมีโปรแกรมไคลเอนต์ C# ที่เกี่ยวข้องที่ส่งข้อความไปยังซ็อกเก็ตนี้จากพีซีเครื่องเดียวกัน พวกเขาทั้งสองทำงานได้ดี

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

ขอบคุณ.


person Chakra    schedule 15.06.2009    source แหล่งที่มา


คำตอบ (4)



หากเซิร์ฟเวอร์เชื่อมโยงกับ 127.0.0.1 ใช่ คุณต้องตั้งค่าเป็น 0.0.0.0

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

สำหรับการรันผ่านสายเคเบิลอนุกรม... ไม่รู้ว่าจะใช้งานได้หรือไม่ และน่าจะต้องมีการตั้งค่ามากมาย

person workmad3    schedule 15.06.2009

คุณจะต้องเจ็บปวดมากหากคุณเดินต่อไปตามเส้นทางนี้ :-)

TCP/IP โดยทั่วไป ทำงานผ่านอีเธอร์เน็ต - ฉันไม่เคยเห็นไดรเวอร์ที่จะรันฟิสิคัลเลเยอร์บนพอร์ตอนุกรม RS232 แม้ว่าจะเป็นไปไม่ได้เลยก็ตาม

คุณควรเชื่อมต่อทั้งสองเครื่องโดยใช้สายเคเบิลเครือข่ายมาตรฐานจะดีกว่า

person paxdiablo    schedule 15.06.2009

TCP/IP ยังทำงานบน SLIP อีกด้วย จำวิธีเก่าๆ ที่คุณใช้ในการเชื่อมต่ออินเทอร์เน็ตได้ไหม? กปปส.ก็จะได้ผลเช่นกัน แต่ฉันไม่คิดว่านั่นคือสิ่งที่เขากำลังมองหา

person Mike    schedule 15.09.2010
comment
TCP/IP พร้อม Stream abstraction ดังที่ Jon Skeet กล่าวว่าคือสิ่งที่ฉันกำลังทำงานอยู่ตอนนี้ ฉันกำลังทดสอบ - ตกลงจนถึงตอนนี้ - person Chakra; 15.09.2010