Study/Project

서버 개발기 4

에린_1 2024. 4. 17. 02:40
728x90

서버 개발기4

회원가입을 구현하고 회원가입의 예외처리를 구현했다.

예외처리 목록

  1. 비밀번호가 다를 때
  2. 중복된 닉네임이 존재할 때
  3. 중복된 아이디가 존재할 때

이에 경우에는 그에 맞는 panel이 띄워지게 코드를 작성했다.

회원가입 부분 코드

비밀번호 확인은 유니티 클라이언트에서 처리했고,

회원가입 부분에서는 닉네임 아이디를 검사하고 문제가 없다면 회원가입을 진행했다.

닉네임 중복 확인
아이디 중복 확인

각 확인 시 문제가 있다면 send() 함수를 통해서 클라이언트에 메시지를 보내고, 그에 맞는 panel이 띄워지게 하고, 성공했을 때는 0을 보내서 성공 panel이 뜨게 끔 코드를 작성했다.

클라이언트쪽 switch문

문제

다른 숫자를 send해도 클라이언트쪽에서는 1만 수신 받았다.

무슨 문제인지 숫자를 바꿔보기도 하고, 다른 여러 방법을 사용했는데도 계속 1만 수신 받는 문제가 있었다.

int res = stream.Read(buffer, 0, buffer.Length);
return res;

이렇게 수신을 받아주고 있었는데, read()의 반환값은 성공했을때 1을 반환하기에 계속 1이 들어오고 있는 문제였다.

그래서 buffer에 있는 값을 int로 바꿔주어 전송하는 것으로 이 문제를 해결했다.

    int ReadData()
    {
        byte[] buffer = new byte[1024];
        stream.Read(buffer, 0, buffer.Length);
        string data = Encoding.UTF8.GetString(buffer);
        Debug.Log(data);
        return int.Parse(data);
    }

이렇게 회원가입을 구현완료 했다.

로그인도 비슷하게 구현해주었다.

id가 데이터베이스에 존재하는지 검사해주고, 존재한다면 그 id의 pw를 찾아와 입력한 pw와 일치하는지 검사를 했다.

코드는 비슷하니 올리지는 않겠다. 그에 따라서 위와 비슷하게 클라이언트에 전송을 해주고, 클라이언트에서는 그 값을 받아 panel을 띄우거나 씬을 이동하는 행동을 진행하게 했다.

씬을 이동할 때, 함수가 작동을 안하길래 왜일까 고민을 했는데, 유니티 씬빌드에 씬이 들어가 있어야 씬 이동을 할 수 있다는 것을 까먹고 있었다.

씬을 이동하는것과 동시에 연결을 끊어주고 다시 연결을 했다. 사실 그럴 필요는 없지만 분산서버를 나중에 구현하고자 연습해보았다.

게시판 포스트를 구현하고, db에서 게시판 데이터를 가져와서 동적으로 만드려는 작업을 진행중인데, 잘 진행되지 않는다.

비동기문제때문에 일어나는 것같다.... 어찌 해결해야할까

아..

일단 한번에 데이터를 받아오는것으로 해결했다.

동적 생성 후 만드는 것도 처리했다.

id를 통해서 받아오는 것도 프리팹을 만드는 것도 처리했다.

게시글을 만드는것까지 끝

728x90

'Study > Project' 카테고리의 다른 글

나만무 슬레이어즈 1  (1) 2024.04.26
서버 개발기 5  (0) 2024.04.17
서버 개발기3  (0) 2024.04.16
서버 개발기2  (0) 2024.04.14
서버 개발기 1  (0) 2024.04.13