RFC 1459는 유명하지 않습니다. 서버를 작성하는 데 필요한 모든 것을 알려주지는 않습니다.
이 경우 누락 된 부분은 기존 모드를 쿼리하는 MODE
명령과 새로운 모드를 설정하는 MODE
명령의 차이입니다. 모드 쿼리의 경우 클라이언트는 기존 모드를 나타내는 숫자 응답을받습니다. 모드를 변경하는 경우 오류가 발생하지 않는 한 클라이언트는 직접 숫자로 응답하지 않습니다. 그러나 모드 이으로 변경되면 클라이언트는 변경 사실을 알리기 위해 서버에서 MODE
을 수신합니다.클라이언트의 대화명이 foo
하고있는 경우
그래서 예를 들어, 전송 :
MODE foo
다음이 현재 사용자 모드를 조회 - 그것은 같은 RPL_UMODEIS
응답을 기대 :
:irc.example.org 221 foo :+i
경우]를 클라이언트가 다음을 보냅니다.
MODE foo :+w
다음이 변경됩니다. - S의 사용자 모드는이 ERR_USERSDONTMATCH
같은 숫자 오류 또는 모드 변경의 승인 얻을 것 중 하나이 확인이 MODE
에 직접 응답이 기술적으로하지 않습니다
:[email protected] MODE foo :+w
하는 것으로를 - 그것은 관련의 클라이언트를 알려주는 서버의 그 상태는 클라이언트 명령에 의해 트리거 된 상태로 변경됩니다.
채널 모드에서도 비슷한 상황이 발생합니다. 클라이언트와 현재 채널 모드 쿼리 경우
MODE #channel
을 한 후 현재의 "간단한"채널 모드를 포함하는 RPL_CHANNELMODEIS
응답, 채널 생성 시간을주고 아마 RPL_CREATIONTIME
응답을 기대합니다. 그와 현재의 금지 목록을 조회하는 경우 :
MODE #channel b
다음 RPL_ENDOFBANLIST
다음에 0 개 이상의 RPL_BANLIST
응답을 얻을 것이다. 대신 클라이언트가 채널 모드 변경하려고하면
:
MODE #channel :+k zounds
을 한 후 직접 응답은 오류 응답 또는 아무것도 것 중 하나; 채널 모드가 실제로 변경된 경우 MODE
명령이 다시 표시되는 것을 볼 수 있습니다. 후자의 경우 성공한 MODE
명령도 채널의 다른 구성원에게 전송됩니다. 이는 실제로 처음 MODE
명령에 대한 직접 응답이 아니라 간접적 인 응답임을 보여줍니다.
출처
2012-10-15 14:08:32
caf