การเชื่อมต่อซ็อกเก็ตโดยไม่ต้องเข้าถึงเซิร์ฟเวอร์

โดยพื้นฐานแล้วการเชื่อมต่อซ็อกเก็ตจะเริ่มต้นหากฉันมีแอปพลิเคชันซ็อกเก็ตเซิร์ฟเวอร์... เริ่มต้นด้วยซ็อกเก็ต ฟังและยอมรับสตรีม ในทางกลับกัน ฉันมีแอปพลิเคชันไคลเอนต์ที่เริ่มต้น ซ็อกเก็ตการเชื่อมต่อและอื่น ๆ เซิร์ฟเวอร์และแอปพลิเคชันไคลเอ็นต์กำลังสื่อสารกันบนสองเครื่องที่แตกต่างกันหรือบนเครื่องเดียว

สมมติว่าเรามีเครื่อง 2 เครื่อง เป็นไปได้ไหมที่จะเริ่มการเชื่อมต่อซ็อกเก็ตหากฉันเพิ่งเข้าถึงไคลเอนต์ (ซึ่งหมายความว่าฉันสามารถเขียนโค้ดแอปพลิเคชันซ็อกเก็ตฝั่งไคลเอ็นต์ได้ แต่ด้วยเหตุผลในการเข้าถึงฉันไม่สามารถสร้างแอปพลิเคชันบนฝั่งเซิร์ฟเวอร์ได้)


person Fendrix    schedule 06.09.2012    source แหล่งที่มา
comment
ฉันอ้างถึง libs เช่น libircclient เนื่องจากฉันคิดว่าฉันเริ่มการเชื่อมต่อซ็อกเก็ตโดยไม่ต้องมีแอปพลิเคชันซ็อกเก็ตที่ฝั่งเซิร์ฟเวอร์   -  person Fendrix    schedule 06.09.2012
comment
ค่อนข้างสับสนฉันกลัว หากคุณไม่สามารถเข้าถึงเครื่องที่คุณต้องการใช้งานเซิร์ฟเวอร์ได้ ก็คงไม่มีประโยชน์ในการเขียนไคลเอนต์ใช่ไหม วัตถุประสงค์ของการสื่อสารคืออะไร?   -  person unwind    schedule 06.09.2012
comment
ฉันแค่ต้องการสื่อสารกับเซิร์ฟเวอร์เหมือนกับเช่นแอปพลิเคชันบอท... บอทอยู่บนฝั่งไคลเอ็นต์   -  person Fendrix    schedule 06.09.2012
comment
หากคุณทำได้ นั่นจะเป็นช่องโหว่ด้านความปลอดภัยเล็กน้อย คุณว่าไหม?   -  person cdarke    schedule 06.09.2012
comment
อาจมีแอปพลิเคชันเซิร์ฟเวอร์ บาง ที่คุณต้องการเชื่อมต่อ ไม่สำคัญว่าคุณจะเชื่อมต่อกับเซิร์ฟเวอร์ใด โครงร่างของไคลเอนต์ยังคงเหมือนเดิมได้: เชื่อมต่อ ตามด้วยการรับและส่งจำนวนเท่าใดก็ได้   -  person Some programmer dude    schedule 06.09.2012
comment
หากต้องการใช้ถ้อยคำใหม่ คุณต้องการเขียนแอปพลิเคชันไคลเอนต์ที่เชื่อมต่อกับเซิร์ฟเวอร์ที่มีอยู่ โดยเฉพาะการใช้โปรโตคอล IRC ใช่ไหม มันจะ ไม่ เป็นไปได้อย่างไร? นั่นคือจุดรวมของการเขียนโปรแกรมเครือข่าย: เพื่อให้ซอฟต์แวร์ที่ไม่เกี่ยวข้องบนโฮสต์ที่แตกต่างกันสื่อสารกัน   -  person SirDarius    schedule 06.09.2012
comment
คุณพูดถูก แต่ฉันเข้าใจผิดหรือเปล่า ในโปรโตคอล IRC ก็เพียงพอแล้วที่จะมีแอปพลิเคชันหนึ่งตัวบนฝั่งไคลเอ็นต์เพื่อสร้างการเชื่อมต่อซ็อกเก็ต   -  person Fendrix    schedule 06.09.2012
comment
socketconnection ไม่ใช่คำที่มีอยู่ การเชื่อมต่อนั้นเป็นช่องทางการสื่อสารระหว่างจุดปลายสองจุด จุดสิ้นสุดแต่ละจุดจะแสดงด้วยซ็อกเก็ตที่ใช้โดยแต่ละโปรแกรม เซิร์ฟเวอร์สร้างซ็อกเก็ตการฟัง และรอให้ไคลเอ็นต์เชื่อมต่อ ไคลเอนต์สร้างซ็อกเก็ตเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่มีอยู่   -  person SirDarius    schedule 06.09.2012


คำตอบ (1)


หากคุณหมายถึงว่าแอปไคลเอ็นต์สามารถสร้างซ็อกเก็ตเซิร์ฟเวอร์ใหม่บนเครื่องที่สองได้ คำตอบคือไม่

person Alec Danyshchuk    schedule 06.09.2012
comment
นั่นหมายความว่าบนเซิร์ฟเวอร์ IRC จะต้องเป็นซ็อกเก็ตที่เกี่ยวข้องเพื่อให้แน่ใจว่าซ็อกเก็ตไคลเอนต์สามารถสื่อสารกับมันได้ใช่ไหม - person Fendrix; 06.09.2012
comment
ใช่. เซิร์ฟเวอร์จะต้องมีซ็อกเก็ตที่ยอมรับการเชื่อมต่อและไคลเอนต์จะต้องทราบที่อยู่ IP ของเซิร์ฟเวอร์ - person Alec Danyshchuk; 06.09.2012
comment
และหมายเลขพอร์ตด้วย เว้นแต่คุณจะใช้โปรโตคอล เช่น ping ตาม ICMP ซึ่งตอบกลับโดยสแต็กในเคอร์เนล นอกจากนี้ ทุกโปรแกรมในเครือข่าย IP ที่สื่อสารข้ามเครื่องที่ระดับต่ำสุดยังใช้ซ็อกเก็ตอีกด้วย วิธีการสื่อสารอื่นๆ ทั้งหมดถูกสร้างขึ้นนอกเหนือจากวิธีเหล่านี้ - person fkl; 06.09.2012