2016-07-24 3 views
0

좋아요, 다음 코드를 사용하면 일부 IRC 서버에 연결할 수 있습니다. 그러나 나는 다른 사람들과 연결할 수없는 것처럼 보입니다. 특히 해당 서버 중 하나가 irc.d2jsp.org입니다.파이썬 소켓을 사용하는 IRC 서버에 연결

제 질문은이 서버에 어떻게 연결합니까? 그리고 연결할 때 내 콘솔에서 아무 말도하지 않는 이유는 무엇입니까?

import socket 
import sys 

server = "irc.d2jsp.org" 
channel = "#channel" 
botnick = "pybot" 
port = 6667 

irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
print "connecting to: " + server 

irc.connect((server, port)) 
print "connected" 

irc.send("USER " + botnick + " " + botnick + " " + botnick + " : Sup!\n") 
print "sent user" 

irc.send("NICK " + botnick + "\n") 
print "sent nick" 

while 1: 
    text = irc.recv(2040) 
    print text 

    if text.find("PING") != -1: 
     irc.send("PONG " + text.split() [1] + "\r\n") 
+0

오류 메시지가 있습니까? 아니면 그냥 아무것도 없음 – MatejMecka

+0

아니오로 작동하는 오류가 없습니다 : ( 연결 지점에서 다른 서버에 연결할 때 메시지가 수신되고 콘솔에 인쇄됩니다 .d2jsp irc에 연결하면 그렇지 않습니다. SSL을 사용하려고 시도했습니다. 하지만 ssl.wrap_socket을 시도 할 때 제대로 응답하지 않는 것 같습니다. – LAZ

답변

0

이것은 귀하의 코드 때문이 아닙니다. irc.d2jsp.org:6667에서 수신하는 서버는 연결을 허용하지만 아무 것도 보내지 않습니다.

내가 얻을 수있는 유일한 반응은 QUIT 명령을 보내면 연결을 닫는 것입니다.


PS : 그 문제에 전혀 관련이 있지만,이 라인 : 당신은 콜론 뒤에 공간을 제거 할 수 있습니다

irc.send("USER " + botnick + " " + botnick + " " + botnick + " : Sup!\n") 

. IRC 프로토콜은 콜론과 마지막 인수 사이에 공백이 있어야하므로 공백이 실제 이름의 일부가됩니다 (예 : <space>Sup!)

+0

내 대답을 찾았습니다. 내 인증 시퀀스 구문과이 비트를 지적했습니다. 도움을 주셔서 감사합니다. 나 : P – LAZ

+0

구문에 문제가 있습니까? –

+0

당신이 말한 것처럼이 특정 서버에 인증이 필요하고 내 인증 명령이 잘못되었다는 사실을 묻습니다. – LAZ

관련 문제