Port
วิธีการส่งกลับสตริงและไม่ใช่จำนวนเต็ม สาเหตุคืออะไรและปลอดภัยหรือไม่ที่จะนำหน้าพอร์ตด้วย ":"
Port
วิธีการส่งกลับสตริงและไม่ใช่จำนวนเต็ม สาเหตุคืออะไรและปลอดภัยหรือไม่ที่จะนำหน้าพอร์ตด้วย ":"
คำตอบ:
เนื่องจากสิ่งที่ปรากฏหลังเครื่องหมายจุดคู่อาจเป็นหมายเลขพอร์ตหรือชื่อบริการก็ได้
ต่อไปนี้เป็นตัวอย่างที่ถูกต้องซึ่งใช้ชื่อบริการแทนหมายเลขพอร์ต:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
net.LookupPort
การทำแผนที่พอร์ตสำหรับบริการเฉพาะสามารถมองขึ้นโดยใช้ บนระบบ Unix /etc/services
ไฟล์มีที่มาสำหรับการแม็พ
สำหรับตัวเลขค่าเริ่มต้นคือ 0: ถ้าเป็นฟังก์ชัน
func (u * URL) Port () string
return number แทนการต่อยพอร์ตจะเป็น 0
พอร์ต 0 เป็นพอร์ตที่สงวนไว้ในเครือข่าย TCP / IP ซึ่งหมายความว่าไม่ควรใช้ในข้อความ TCP หรือ UDP อย่างไรก็ตามพอร์ต 0 มีความสำคัญเป็นพิเศษในการเขียนโปรแกรมเครือข่ายโดยเฉพาะการเขียนโปรแกรมซ็อกเก็ต Unix: สำหรับการร้องขอพอร์ตไดนามิกที่จัดสรรโดยระบบ
จำเป็นต้องมีการเขียนโปรแกรมในหลายฟังก์ชัน
url.port()
กลับสตริง ... แต่ Gurl url.has_port()
นอกจากนี้ยังมี ดังนั้นในทางทฤษฎีเราสามารถแยกแยะhttp://example.com:/path
(มีพอร์ต แต่port()
เป็นสตริงว่าง) จากhttp://example.com/path
(ไม่มีพอร์ต) แน่นอนว่า GURL เองก็ไม่ทำเช่นนี้! แม้จะรายงานว่าhttp://example.com:80/path
"ไม่มีพอร์ต" เนื่องจากพอร์ตที่ระบุอย่างชัดเจนนั้นซ้ำซ้อนกับโครงร่าง ซึ่งเป็นบ้าแต่ไม่เคยใจ ... จุดคือไม่ได้String
Optional
อย่าทำให้พวกเขาสับสน