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 :
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 :
ครั้งนี้ได้ทำการปรับปรุงการทำงานและ 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 client2. จะได้ไฟล์ชื่อ 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 นาที ได้ผลดังรูป
สรุป จากการทดลองสามารถทำการส่งไฟล์ขนาดใหญ่ได้อย่างถูกต้อง
Reference :
http://www.bogotobogo.com/cplusplus/sockets_server_client.php
https://stackoverflow.com/questions/3431825/generating-an-md5-checksum-of-a-file
ความคิดเห็น
แสดงความคิดเห็น