IRC 프로토콜의 PRIUMSG 명령어를 구현하여 사용자가 개인 메시지를 다른 사용자 또는 채널에 보낼 수 있도록 합니다.
에러 처리
ERR_NOSUCHNICK (401): 존재하지 않는 대상
ERR_NOSUCHCHANNEL (403): 존재하지 않는 채널
ERR_CANNOTSENDTOCHAN (404): 메시지를 채널에 전달할 수 없음
ERR_TOOMANYTARGETS (407): 최대 대상 수 초과 또는 존재하지 않는 대상 포함
ERR_NORECIPIENT (411): 수신자 지정 안됨
ERR_NOTEXTTOSEND (412): 보낼 텍스트 없음
ERR_NOTOPLEVEL (413): 잘못된 채널 이름
ERR_WILDTOPLEVEL (414): 채널 이름에 와일드카드 포함 (413에러로 퉁치기)
ERR_AWAY (301): 대상이 자리 비움 (사용X)
코드 진행 순서
1.쉼표로 문자열 파싱
-수신자 지정 안됨 (411)
-보낼 텍스트 없음 (412)
2.채널 또는 개인 확인
2-1.단일 상대에게 보낼 때
-채널 이름 형식 검사 (413)
-채널 존재 검사: (403)
-클라이언트가 채널에 가입되어있는지 검사: (404)
-개인 존재 검사: (401)
2-2.다중 대상에게 보낼 때
-(413, 403, 401)에러중 하나라도 해당되면 -> (407)
3.메시지 보내기
-채널: 채널 사용자 확인 후 모두에게 메시지 전송
-개인: 개인에게 메시지 전송
메소드 설명
Server::ParseComma
기능: 문자열을 콤마 기준으로 벡터로 파싱
인자: const std::string& str
반환: std::vector<std::string>
Server::CheckChannelName
기능: 채널 이름이 올바른 형식인지 검사(1. 채널이름 시작은 '#', 2. 채널 이름에 '#'을 제외한 특수문자는 모두 오류로 처리)
IRC PRIVMSG 명령어 코딩 시나리오
목적
IRC 프로토콜의 PRIUMSG 명령어를 구현하여 사용자가 개인 메시지를 다른 사용자 또는 채널에 보낼 수 있도록 합니다.
에러 처리
ERR_NOSUCHNICK (401): 존재하지 않는 대상 ERR_NOSUCHCHANNEL (403): 존재하지 않는 채널 ERR_CANNOTSENDTOCHAN (404): 메시지를 채널에 전달할 수 없음 ERR_TOOMANYTARGETS (407): 최대 대상 수 초과 또는 존재하지 않는 대상 포함 ERR_NORECIPIENT (411): 수신자 지정 안됨 ERR_NOTEXTTOSEND (412): 보낼 텍스트 없음 ERR_NOTOPLEVEL (413): 잘못된 채널 이름 ERR_WILDTOPLEVEL (414): 채널 이름에 와일드카드 포함 (413에러로 퉁치기) ERR_AWAY (301): 대상이 자리 비움 (사용X)
코드 진행 순서
1.쉼표로 문자열 파싱 -수신자 지정 안됨 (411) -보낼 텍스트 없음 (412) 2.채널 또는 개인 확인 2-1.단일 상대에게 보낼 때 -채널 이름 형식 검사 (413) -채널 존재 검사: (403) -클라이언트가 채널에 가입되어있는지 검사: (404) -개인 존재 검사: (401) 2-2.다중 대상에게 보낼 때 -(413, 403, 401)에러중 하나라도 해당되면 -> (407) 3.메시지 보내기 -채널: 채널 사용자 확인 후 모두에게 메시지 전송 -개인: 개인에게 메시지 전송
메소드 설명
Server::ParseComma
const std::string& str
std::vector<std::string>
Server::CheckChannelName
const std::string& str
bool
Server::CheckUserInServer
const std::string& str
bool
Server::CheckChannelInServer
const std::string& channel_name
bool
Server::GetUserListInChannel
const std::string& channel_name
std::string
주의사항