작성
·
1K
1
첫번째 사진이 서버 IP로그구요.
밑에 사진이 유니티 클라이언트 IP로그 입니다.
유니티에서 서버로 접속할때 OnConnectCompleted Fail: ConnectionRefused 로그가 뜨면서 플레이어 케릭터가 생성이 안되는 현상이 발생했습니다.
서버에 연결이 실패한 원인을 찾아보니 서버쪽에선 아이피가 :::1인반면 유니티쪽은 127.부터 시작하는 아이피로 서로 틀리더라고요.
서버쪽 로그를 보니 더미 클라에서 모아 보내기가 계속 찍히는거 보면 문제는 없어보입니다만, 이 경우 어떻게 해야될까요?
잘 부탁드립니다 ^^
답변 5
2
DNS는 hostname을 ip로 바꿔주는 함수인데요.
(ex. www.naver.com -> 191.123.123.123)
나중에 AWS에다 서버를 띄우게 되면
DNS 함수는 우리 로컬 컴퓨터에서 뿅 실행되는게 아니라
DNS 서버까지 가서 물어본 다음에, 그 결과물을 찾아서 우리한테 알려주게 됩니다.
그리고 동일한 hostname도 여러개의 ip를 가질 수가 있습니다.
가령 www.naver.com을 실행하고 있는 서버가 딱 1개는 아니겠죠?
그러다 보니 결과물을 배열로 반환하는 것이고
그 내용과 순서는 DNS 서버가 우리한테 뱉어준 순서로 뜨게 됩니다.
참고로 의도적으로 트래픽 분산을 위해
DNS 서버에서 각기 다른 ip 결과값으로 우리한테 알려줄 수도 있습니다.
로컬 테스트할 때는 컴퓨터가 ipv4 ipv6 주소를 갖고 있고
추가로 vmware 같은 가상화 프로그램 등을 깔면 ip 주소가 더 늘어나기 때문에
저렇게 엄청 많이 IP가 뜨고 있는 것으로 보입니다.
1
적용할 아이피를 데이터시트로 빼서 관리하거나,
둘다 192.168~이 나오도록 루프를 돌면서
IPv4 아이피에 해당하는 애만 추출해주면 되겠습니다.
(fe:~~ 엄청 긴게 IPv6입니다.)
IPv4는 아래에서 curAdd.AddressFamily를 이용해 확인 가능합니다.
https://docs.microsoft.com/ko-kr/dotnet/api/system.net.ipaddress?view=net-5.0
0
게임 서버에도 DNS 가 쓰이나요? 제가 인터넷 구조를 완변히 이해한건 아니라서 궁금해서요. dns 용도가 사람이 아이피 주소를 외울수 없으니 문자를 치면 따로 서버에서 그 문자의 아이피를 찾아주는 것으로 알고 있는데 게임 사이트를 제외하고는 로직을 처리하고 아이템을 주거나 플레이어 체력이 깍이고, 위치를 전송하는 것도 dns가 쓰이나요?
0
0
감사합니다 ^^
서버 아이피를 억지로 맞춰주니 잘 돌아갑니다!
나중에 공개서버로 바꿀 때 바뀔코드겠지만 어떤 녀석인지 첨부해주신 레퍼런스 참고하겠습니다!
다음 수업에서 뵙겠습니다 ^^
추가 질문: 서버에 아이피 배열이 왜 가변적으로 변하는걸까요?
웹이 아니라도 DNS는 반드시 필요합니다.
|
로직을 처리하고 아이템을 주거나 플레이어 체력이 깍이고, 위치를 전송하는 것도 dns가 쓰이나요?
그렇다고 위 상황은 아니구요.
처음에 클라가 서버에 접속할 때, 당연히 서버 주소를 알아야 합니다.
이 때 서버는 공인IP를 할당받아 변하지 않는 고정IP를 갖고 있는 상황인데요.
이 고정 IP가 123.123.123.123이라고 가정해봅시다.
그렇다고 클라에서 항상 123.123.123.123으로 접속하게 만들게 되면,
혹시라도 나중에 서버 위치가 변경되어 IP가 변경되면
클라에서 절대 접속을 할 수 없게 됩니다.
클라는 이미 빌드되어 배포가 나간 상태이기 때문에
유동적으로 뭔가 수정할 수 없는 상황이기 때문입니다.
(여담인데 IOS쪽은 고정IP를 박으면 리젝 사유가 되기도 합니다)
따라서 클라에서는 고정IP를 접속하는게 아니라 특정 도메인 주소를 이용해
IP를 찾게 만든 후, 해당 IP로 접속을 해야 합니다.