การตั้งค่าเวอร์ชันไคลเอ็นต์สำหรับ Java irc bot

ฉันกำลังพยายามสร้างบอท irc ด้วย Java ขณะนี้ปัญหาของฉันคือฉันไม่สามารถเชื่อมต่อกับ Quakenet ได้ ฉันได้รับข้อความว่า "ไคลเอนต์ของคุณอาจเข้ากันไม่ได้กับเซิร์ฟเวอร์นี้" ซึ่งอาจเป็นเพราะฉันไม่ได้ตั้งค่าเวอร์ชันไคลเอนต์สำหรับบอทนี้ ฉันจะทำเช่นนั้นได้อย่างไร?

ฉันรู้ว่ามีไลบรารีสำหรับสร้าง irc bot ด้วย Java แต่ฉันต้องการสร้างไลบรารีตั้งแต่ต้นเพื่อรับความรู้เพิ่มเติม


person Kamsiinov    schedule 17.11.2016    source แหล่งที่มา


คำตอบ (1)


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

ฉันขอแนะนำให้อ่าน RFC1459 (โปรโตคอล IRC) และดูปริมาณข้อมูลดิบที่ถูกส่งไปยังไคลเอนต์ของคุณเพื่อดูว่าเกิดอะไรขึ้น ดังที่โยกี เบอร์ราเคยกล่าวไว้ว่า "คุณสังเกตสิ่งต่างๆ มากมายเพียงแค่ดูเท่านั้น"

person Duston    schedule 17.11.2016
comment
ขอบคุณ. อย่างไรก็ตาม คุณช่วยอธิบายรายละเอียดเล็กๆ น้อยๆ นี้หน่อยได้ไหม? ฉันไม่แน่ใจว่าจะเห็นปริมาณการเข้าชมมากขึ้นได้อย่างไร เนื่องจากฉันคิดว่าขณะนี้ฉันกำลังพยายามส่งออกทุกอย่างไปยังคอนโซล - person Kamsiinov; 18.11.2016
comment
ท้ายที่สุดสิ่งที่คุณทำคือเปิดซ็อกเก็ต แค่พิมพ์อะไรก็ได้ที่มาจากซ็อกเก็ตนั้นไปยังคอนโซล (นอกเหนือจากอะไรก็ตามที่คุณทำกับมัน) คุณจะเห็นเรื่องสนุก ๆ ทุกประเภท ฉันเขียนบอทตั้งแต่เริ่มต้นเมื่อหลายปีก่อนแต่ไม่พบแหล่งที่มา ความพยายามครั้งล่าสุดของฉันใช้ไลบรารี pIRC มันใช้งานได้ดี แต่เนื่องจากคุณต้องการม้วนของคุณเอง นั่นไม่ได้ช่วยอะไรคุณเลย - person Duston; 18.11.2016
comment
นั่นคือวิธีแก้ปัญหาเช่นกัน ดูเหมือนว่าในการเข้าร่วมเครือข่าย IRC ฉันไม่จำเป็นต้องระบุเวอร์ชันใด ๆ แค่นิคและชื่อผู้ใช้ ในที่สุดสิ่งที่ฉันต้องการก็คือ: Socket socket= new Socket(server, 6667); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(soketti.getOutputStream())); BufferedReader br = new BufferedReader(new InputStreamReader(soketti.getInputStream())); System.out.println("Starting login"); // Login to server bw.write("NICK " + nickname + "\r\n"); bw.write("USER " + login + " 8 * : robot\r\n"); bw.flush(); - person Kamsiinov; 19.11.2016