2020/05/04 - รหัสการจัดระเบียบและการปรับโครงสร้างใหม่และการลบคำเตือนที่ถูกตั้งค่าสถานะโดยคอมไพเลอร์บางตัว ในช่วงไม่กี่เดือนที่ผ่านมาฉันย้ายไปที่ใหม่กว่าเนื่องจากการอัปเดตเพื่อเพิ่มรหัส ASIO
2019/08/29 - เพิ่มฟังก์ชั่นยูทิลิตี้สตริงพิเศษ
2019/04/11 - เพิ่มการสนับสนุนสำหรับบัฟเฟอร์โปรโตคอล Google ในยูทิลิตี้การทำให้เป็นอนุกรม ดังนั้นจึงสนับสนุนการประสบความสำเร็จโดยอัตโนมัติในคลาส ASIO ทั้งหมดเช่นคลาส TCP, UDP และ Multicast
ไลบรารีนี้ (Corelibrary) นี้เป็นคอลเลกชันของคลาสยูทิลิตี้ C ++ 1X ที่มีประโยชน์เพื่อช่วยในการทำมัลติเธรดการบันทึกระบบเครือข่ายข้อยกเว้นที่กำหนดเองยูทิลิตี้ไฟล์ไฟล์ INI การทำให้เป็นอนุกรมการเรียงลำดับยูทิลิตี้สตริงและอื่น ๆ กล่าวอีกนัยหนึ่งคอลเลกชันทั่วไปของรหัสที่มีประโยชน์มากในโครงการการเข้ารหัส C ++ ที่แตกต่างกัน
หากคุณพบว่ารหัสนี้มีประโยชน์และใช้ในซอฟต์แวร์ของคุณหรือนำส่วนหนึ่งไปใช้ในการทำงานของคุณเองโปรดให้เครดิตและเคารพใบอนุญาต
มันได้รับอนุญาตภายใต้ข้อกำหนดของ LGPL 3.0 และเอกสารที่เกี่ยวข้องสำหรับสิ่งนี้สามารถพบได้ที่ด้านบนของแต่ละไฟล์ต้นฉบับและในไฟล์ข้อความใบอนุญาต
รหัสคือผลงานของฉัน (Duncan Crutchley) ([email protected])
ลิขสิทธิ์ (C) 2014 เป็นต้นไป Duncan Crutchley
ห้องสมุดนี้ได้รับการพัฒนาใน QT Creator สำหรับ Windows และ Linux ใน Windows ขอแนะนำให้ใช้ห่วงโซ่เครื่องมือ MSVC2017 จากภายในผู้สร้าง QT เพื่อสร้างและทดสอบรหัส แต่ใช้กับ MSVC2013 และ MSVC2015 สำเร็จ คอมไพเลอร์อื่น ๆ ได้รับการทดสอบใน Windows เช่น Clang 3.4+ และ GCC (MingW) 4.8.x+ และรหัสควรทำงานกับสิ่งเหล่านี้ ใน Linux รหัสได้รับการทดสอบด้วย GCC 4.8.x+ และ Clang 3.4+ ฉันพยายามใช้คอมไพเลอร์เวอร์ชันใหม่ล่าสุดที่ฉันสร้างรหัสนี้ด้วย ดังนั้นฉันจะไม่รับประกันว่าฉันจะรักษาการสนับสนุนคอมไพเลอร์รุ่นเก่าในขณะที่ฉันย้ายรหัสของฉันด้วยการปรับปรุงและคุณสมบัติใหม่
บน Windows (Win10 64bit) ฉันกำลังใช้ MSVC 2017 64 บิตคิทใน QT Creator 4.9.2/ QT Framework 5.13.0 บน Linux (Manjaro) ฉันกำลังใช้ชุด GCC 8.2.1 และ Clang 8.0.0 ใน QT Creator 4.9.2 และ QT Framework 5.13.0
โครงการที่จัดทำขึ้นสำหรับการทดสอบห้องสมุดและหน่วยสำหรับผู้สร้าง QT และจะทำงานใน Linux และ Windows เพื่อให้บรรลุนี้โครงการนี้ขึ้นอยู่กับ MKSPEC ที่กำหนดเองเพื่อคัดลอกจากโฟลเดอร์ QT_CUSTOM_MKSPECS ลงในโฟลเดอร์คุณสมบัติ MKSPEC ที่เหมาะสมของ QT ตัวอย่าง MKSPECs มีไว้สำหรับความเข้ากันได้กับ MSVC2017 64 บิตและ Linux สิ่งเหล่านี้ควรปรับแต่งสำหรับระบบของผู้ใช้
คุณสามารถใช้รหัสนี้ภายในการพัฒนาอื่น ๆ และสร้างสภาพแวดล้อม แต่ขึ้นอยู่กับผู้ใช้ในการสร้างโครงการที่จำเป็นหรือ makefiles สำหรับสภาพแวดล้อมเหล่านั้น สิ่งนี้ควรจะค่อนข้างง่ายโดยอ้างถึงไฟล์ QT Project (.PRO) และไฟล์ MKSPEC ที่กล่าวถึงก่อนหน้านี้
ไลบรารีนี้ต้องการไลบรารีโอเพนซอร์สของบุคคลที่สามเพื่อรวบรวมและฟังก์ชั่น เหล่านี้มีดังนี้:
เช่นเดียวกับคอมไพเลอร์ฉันมักจะเก็บสำเนาของห้องสมุดบุคคลที่สามไว้ข้างต้นด้วยรุ่นที่มีเสถียรภาพล่าสุดของพวกเขาดังนั้นฉันจะไม่รับประกันการสนับสนุนอย่างเต็มที่สำหรับ Versoins เก่าของห้องสมุดเหล่านี้ในขณะที่ฉันทำงานต่อไปในโครงการนี้
นี่เป็นโครงการงานอดิเรกส่วนใหญ่ตามความรู้ที่ฉันได้รับจากประสบการณ์หลายปีในการทำงานด้านการพัฒนาซอฟต์แวร์และสถาบันการศึกษาตั้งแต่ปี 2542 ฉันเริ่มพัฒนารหัสนี้ในต้นปี 2557 ซึ่งแสดงถึงคอลเลกชันของการใช้งานที่ตรงไปตรงมาและมีประโยชน์สำหรับการพัฒนาซอฟต์แวร์
รหัสทั้งหมดได้รับการทดสอบหน่วยด้วยความคุ้มครองที่ดีและฉันใช้รหัสนี้ในโครงการของฉันเองโดยไม่มีปัญหา ฉันยังใช้รหัสนี้และรหัสที่คล้ายกันที่เขียนโดยฉันในโครงการเชิงพาณิชย์บ่อยครั้งที่มีความต้องการตามเวลาจริง (อ่อน) และไม่มีปัญหาใด ๆ ดังนั้นอย่าลังเลที่จะใช้สิ่งนี้ในโครงการเชิงพาณิชย์ตราบใดที่คุณปฏิบัติตามใบอนุญาต
ฉันแก้ไขข้อบกพร่องและปรับปรุงรหัสเมื่อจำเป็น แต่ไม่รับประกันว่าจะเกิดอะไรขึ้นบ่อยแค่ไหน ฉันไม่รับประกันหรือสนับสนุนสำหรับปัญหาใด ๆ ที่พบในขณะที่ใช้งาน แม้ว่าคุณจะติดอีเมลถึงฉันตามที่อยู่ที่ให้ไว้และถ้าฉันมีเวลาฉันจะพยายามช่วยหรือแก้ไขปัญหาหากอยู่ในอำนาจของฉันที่จะทำเช่นนั้น
รหัสนี้มีความคิดเห็นโดยใช้ความคิดเห็นสไตล์ doxygen ดังนั้นตรวจสอบเอกสารใน/docs/html/โฟลเดอร์และ Open Index.html ในเบราว์เซอร์ที่คุณเลือก
สำหรับตัวอย่างการใช้งานฉันขอแนะนำให้ดูที่รหัสทดสอบหน่วยในโฟลเดอร์ /Unittests /GoogleTests
การทดสอบหน่วยเครือข่ายจำเป็นต้องมีการเชื่อมต่อเครือข่ายและคาดว่าจะมีการตั้งค่าอะแดปเตอร์ 2 ตัวหนึ่งรายการใน 10.34.6.1/255.255.0.0 และอีกอันใน 10.35.6.1/255.255.0.0 สิ่งเหล่านี้สามารถเป็นอะแดปเตอร์ลูปแบ็คหรืออะแดปเตอร์เครือข่ายทางกายภาพ แต่เพื่อทดสอบกลุ่มมัลติคาสต์และการออกอากาศ UDP ผู้ใช้จะต้องกำหนดค่าไฟร์วอลล์และการตั้งค่าความปลอดภัยอย่างเหมาะสม
ดู Wiki สำหรับข้อมูลและตัวอย่างโดยละเอียดเพิ่มเติม