feat: 중복 로그인 방지 코드 추가
This commit is contained in:
parent
1d103d7f16
commit
17013f70f5
6 changed files with 102 additions and 7 deletions
|
|
@ -33,13 +33,38 @@ bool BaseClient::ReceiveHeader(PacketHeader &header) {
|
|||
}
|
||||
}
|
||||
|
||||
void BaseClient::Login(const std::string &nickname) {
|
||||
bool BaseClient::Login(const std::string &nickname) {
|
||||
PKT_CS_Login loginPkt;
|
||||
std::memset(loginPkt.nickname, 0, sizeof(loginPkt.nickname));
|
||||
std::strncpy(loginPkt.nickname, nickname.c_str(),
|
||||
sizeof(loginPkt.nickname) - 1);
|
||||
SendPacket(PacketID::Login, &loginPkt, sizeof(loginPkt));
|
||||
std::cout << "로그인 요청 보냄: " << nickname << std::endl;
|
||||
|
||||
// 로그인 결과 대기
|
||||
PacketHeader header;
|
||||
if (!ReceiveHeader(header) ||
|
||||
header.id != static_cast<uint16_t>(PacketID::SC_LoginResult)) {
|
||||
std::cerr << "로그인 응답을 받지 못했습니다." << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
PKT_SC_LoginResult res;
|
||||
if (!ReceivePayload(res)) {
|
||||
std::cerr << "로그인 응답 수신 실패" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (res.result == 1) {
|
||||
std::cout << "로그인 성공!" << std::endl;
|
||||
return true;
|
||||
} else if (res.result == 0) {
|
||||
std::cerr << "로그인 실패: 이미 접속 중인 유저입니다." << std::endl;
|
||||
return false;
|
||||
} else {
|
||||
std::cerr << "로그인 실패: 알 수 없는 오류" << std::endl;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void BaseClient::HandleUpgradeResult() {
|
||||
|
|
@ -68,7 +93,10 @@ void BaseClient::HandleSellResult() {
|
|||
void InteractiveClient::Run() {
|
||||
std::cout << "닉네임을 입력하세요: ";
|
||||
std::cin >> nickname_;
|
||||
Login(nickname_);
|
||||
if (!Login(nickname_)) {
|
||||
std::cerr << "로그인에 실패하여 종료합니다." << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
if (currentLevel_ == 0) {
|
||||
|
|
@ -128,7 +156,10 @@ void ScenarioClient::Run() {
|
|||
|
||||
if (!(is >> nickname_))
|
||||
return;
|
||||
Login(nickname_);
|
||||
if (!Login(nickname_)) {
|
||||
std::cerr << "로그인에 실패하여 종료합니다." << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
std::string line;
|
||||
while (is >> line) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue