ซ็อกเก็ต PHP: การส่งสำเร็จ แต่ไม่สามารถเรียกคืนการตอบกลับได้
one text
ฉันกำลังใช้บริการเว็บซึ่งส่งข้อความ HL7 ผ่านโปรโตคอล MLLP ไปยังผู้ให้บริการหลายราย ในทางปฏิบัติ วิธีนี้ควรทำได้ง่ายๆ เพียงส่งสตริงที่ถูกต้องซึ่งล้อมรอบด้วย <VT>
และ <FS><CR>
ดังนั้น บางอย่างเช่น (นี่คือรหัสเทียม):
$socket = create_socket($destIp, $destPort);\n$socket->send("\\013".$hl7Message."\\034\\015");\n$response = $socket->read();\n
\nฉันใช้ < a>ไลบรารีนี้สำหรับสิ่งนั้น (รหัสการส่งอยู่ใน ไฟล์นี้ โดยเฉพาะ) ซึ่งใช้ socket_create()
, {- code-5}
และ socket_read()
ทำงานได้อย่างสมบูรณ์ ยกเว้นผู้ให้บริการรายเดียวที่หมดเวลาในการรอข้อมูล การใช้ tcpdump ฉันเห็นว่าส่งข้อมูลสำเร็จ ได้รับแพ็กเก็ตที่มีการตอบกลับ แต่ PHP ไม่สามารถดึงข้อมูลการตอบกลับผ่าน socket_read()
stream_socket_client()
, stream_socket_sendto()
และ stream_socket_recvfrom()
บนฟังก์ชันที่เหมือนกันเกือบทั้งหมด ผลลัพธ์ส่วนใหญ่เหมือนกัน\nMirth ซึ่งเป็นแพลตฟอร์มที่ใช้ Java สำหรับจัดการข้อความ HL7\n ไม่มีปัญหาในการส่งไปยังผู้ให้บริการรายนี้ ฉันก็ไม่มีปัญหาในการส่งข้อความถึงเมิร์ธเช่นกัน ปัญหาเดียวคือฉันได้รับการตอบกลับเมื่อส่งโดยตรง
\nเมื่อพิจารณาว่าพวกเขาเป็นบริษัทข้ามชาติและฉันเป็นโปรแกรมเมอร์อิสระที่ต่ำต้อย ฉันจึงอยากทราบว่าฉันจะทำอะไรได้อีก เพื่อดูว่าปัญหาคืออะไร และถ้าเป็นไปได้ จะแก้ไขได้อย่างไร คำแนะนำใด ๆ เกี่ยวกับวิธีแก้ปัญหานี้หรือวิธีอื่น ๆ ในการดำเนินการนี้ (โดยไม่ต้องพึ่งพาพ่อค้าคนกลาง – ฉันรู้ว่าฉันสามารถส่งข้อความไปยัง Mirth และให้ส่งไปยังผู้ให้บริการได้ แต่มันเป็นข้อผิดพลาดเพิ่มเติมที่ฉัน \ต้องการหลีกเลี่ยง) จะได้รับการชื่นชมอย่างมาก
\n Source