Connect and send data between programs (Part 4) : Send large file + MD5 Checksum

จากที่เคยทำการทดลองส่งไฟล์ระหว่างภาษา C++ และ Python ไปแล้ว
ครั้งนี้ได้ทำการปรับปรุงการทำงานและ Code ใหม่

ครั้งนี้ใช้ Server เป็น Windows ด้วยภาษา C++ ส่วน Client เป็น Linux ด้วย Python
หลักการทำงานคือ ให้ Client ทำการส่งชื่อไฟล์ที่ต้องการไปยัง Server จากนั้น Server จะทำการส่งไฟล์นั้นกลับมาให้ Client ผ่าน TCP Socket

Environment :
  • OS : 
    • Windows 8.1 64-bit
    • Linux Ubuntu 14.04 LTS in VMware Workstation 12 Player
  • Language
    • Python 2.7.1
    • C++ (TDM-GCC 4.9.2 64-bit Compiler)

Program code : https://github.com/watashimill/ConnectBetweenDataPathII

ขั้นตอนการทดลอง

1. ทำการ Compile Code ภาษา C++ ใน Ubuntu โดยคำสั่ง
g++ client.cpp -o client
2. จะได้ไฟล์ชื่อ client พร้อมทดลองรัน โดยคำสั่ง
./client
   จะพบว่าต้องใส่ Argument ให้ครบก่อนด้วย ซึ่งเก็บไว้ทีหลังเปิด Server



3. ที่เครื่องฝั่ง Windows ทำการ Run Server Python เพื่อรอรับการเชื่อมต่อ


4. จากนั้น กลับไปที่ Ubuntu ใส่ ชื่อไฟล์ที่ต้องการ , Server IP/Port จะทำการ Download file
เมื่อได้ไฟล์ ลองทำ MD5 Checksum เพื่อเปรียบเทียบกับฝั่ง Server ว่าได้ไฟล์ที่ถูกต้องหรือไม่


ขณะเดียวกันที่ฝั่ง Server จะมีข้อความแสดงมาดังรูป



5. เมื่อทดลองส่ง Text file สำเร็จ จึงลองส่งไฟล์ที่ขนาดใหญ่ขึ้น เป็น Animation ยาว 24 นาที ขนาด 228MB จากการจับเวลา ใช้เวลาประมาณไม่ถึง 1 นาที ได้ผลดังรูป





6. ทดลองส่งไฟล์ที่ใหญ่ขึ้นไปอีก เป็นหนัง Full-HD 1 เรื่องขนาด 4.38 GB จากการจับเวลา ใช้เวลาประมาณ 10 นาที ได้ผลดังรูป






สรุป จากการทดลองสามารถทำการส่งไฟล์ขนาดใหญ่ได้อย่างถูกต้อง

Reference :

http://www.bogotobogo.com/cplusplus/sockets_server_client.php

https://stackoverflow.com/questions/3431825/generating-an-md5-checksum-of-a-file

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

XML

Connect and send data between programs (Part 2) : Send data using Thai language