สิ่งนี้อยู่ภายใต้พื้นฐานของการสื่อสารโปรโตคอล ธุรกรรมได้รับการร้องขอจากไคลเอนต์ Android และเซิร์ฟเวอร์จะต้องทำธุรกรรม หากการทำธุรกรรมขึ้นอยู่กับการรับรู้ของลูกค้า Android กว่านี้คือการสื่อสาร ACK / NAK โทร
ACK (การตอบรับ) และNAK (การรับรู้เชิงลบ)ใช้เพื่อบอกผลการร้องขออีกด้านหนึ่ง
สิ่งที่คุณถามเกี่ยวกับคือการแลกเปลี่ยนจับมือกันระหว่างลูกค้าและเซิร์ฟเวอร์และสามารถดำเนินการได้ด้วยการแลกเปลี่ยน ACK / NAK พื้นฐาน
นี่คือตัวอย่างของ Android ที่อัปโหลดไฟล์ที่มีการตอบรับสองทาง
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
ในตัวอย่างด้านบนฉันได้เพิ่ม#id
ตัวระบุเฉพาะสำหรับธุรกรรม เซิร์ฟเวอร์ควรได้รับไฟล์สร้างบันทึกการทำธุรกรรมและส่งไปที่การตอบสนองกลับไปที่ Android Android ควรปฏิบัติตามพร้อมกับรับทราบการทำธุรกรรมนั้น (หรืออีกทางหนึ่งคือ NAK สำหรับการปฏิเสธ)
นี่คือตัวอย่างของการตัดการเชื่อมต่อ Android ระหว่างการจับมือกัน
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
ในตัวอย่างด้านบนเซิร์ฟเวอร์ยอมรับไฟล์ที่อัพโหลดและส่งการ#id
ตอบกลับ ACK กลับไปที่ Android แต่ Android ไม่ตอบสนองด้วย ACK อุปกรณ์ Android ล้มเหลวในการจับมือ ขึ้นอยู่กับคุณที่จะตัดสินใจว่าเซิร์ฟเวอร์ควรจัดการกับเรื่องนี้อย่างไร ทำลายธุรกรรมทำธุรกรรมต่อและรอให้อุปกรณ์ Android กลับมาในภายหลังหรือทำธุรกรรมให้เสร็จสิ้น
เซิร์ฟเวอร์สามารถสันนิษฐานได้ว่าเนื่องจากอุปกรณ์ไม่ตอบสนองกับ ACK อุปกรณ์ Android ไม่ได้อัปเดตเป็นสถานะภายในเพื่อระบุว่าการอัปโหลดสำเร็จ ฉันจะยกเลิกการทำธุรกรรมและอนุญาตให้อุปกรณ์ทำซ้ำในอนาคต