ซ็อกเก็ต PHP: การส่งสำเร็จ แต่ไม่สามารถเรียกคืนการตอบกลับได้

one text

ฉันกำลังใช้บริการเว็บซึ่งส่งข้อความ HL7 ผ่านโปรโตคอล MLLP ไปยังผู้ให้บริการหลายราย ในทางปฏิบัติ วิธีนี้ควรทำได้ง่ายๆ เพียงส่งสตริงที่ถูกต้องซึ่งล้อมรอบด้วย <VT> และ <FS><CR> ดังนั้น บางอย่างเช่น (นี่คือรหัสเทียม):

\n
$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()

\n< p>เพื่อความแน่ใจ ฉันได้ลองปรับใช้สตรีมซ็อกเก็ตอีกครั้ง ฉันจึงใช้ฟังก์ชัน stream_socket_client(), stream_socket_sendto() และ stream_socket_recvfrom() บนฟังก์ชันที่เหมือนกันเกือบทั้งหมด ผลลัพธ์ส่วนใหญ่เหมือนกัน

\n

Mirth ซึ่งเป็นแพลตฟอร์มที่ใช้ Java สำหรับจัดการข้อความ HL7\n ไม่มีปัญหาในการส่งไปยังผู้ให้บริการรายนี้ ฉันก็ไม่มีปัญหาในการส่งข้อความถึงเมิร์ธเช่นกัน ปัญหาเดียวคือฉันได้รับการตอบกลับเมื่อส่งโดยตรง

\n

เมื่อพิจารณาว่าพวกเขาเป็นบริษัทข้ามชาติและฉันเป็นโปรแกรมเมอร์อิสระที่ต่ำต้อย ฉันจึงอยากทราบว่าฉันจะทำอะไรได้อีก เพื่อดูว่าปัญหาคืออะไร และถ้าเป็นไปได้ จะแก้ไขได้อย่างไร คำแนะนำใด ๆ เกี่ยวกับวิธีแก้ปัญหานี้หรือวิธีอื่น ๆ ในการดำเนินการนี้ (โดยไม่ต้องพึ่งพาพ่อค้าคนกลาง – ฉันรู้ว่าฉันสามารถส่งข้อความไปยัง Mirth และให้ส่งไปยังผู้ให้บริการได้ แต่มันเป็นข้อผิดพลาดเพิ่มเติมที่ฉัน \ต้องการหลีกเลี่ยง) จะได้รับการชื่นชมอย่างมาก

\n

Source