Study/Project

서버 개발기 1

에린_1 2024. 4. 13. 22:21
728x90

이 서버 개발기 1은 곧 프로젝트명으로 바뀔 예정이다. 물론 기획이 완성된다면!

아직 프로젝트가 정해지지 않아 작은 프로젝트로 로그인과 게시판을 구현하면서 연습하고자 한다.

다양한 블로그와 책,공식 docs를 통해서 공부하면서 코드를 작성했다.

받아오는 데이터의 문제

현재 유니티 클라이언트와 c++ 서버의 연결은 성공했다.

데이터 send와 receive도 구현을 했는데, recv한 데이터를 print했을 때, 뒤에 이상한 값들이 같이 나오는 문제가 있다.

흑흑.. 슬프다 슬퍼 어제는 받아오지도 못했으니 그래도 전진한것을 긍정적으로 생각해봐야겠다.

돌밍님 찬양, 경배해

아래 우리의 왕의 블로그다.

https://stonebig.tistory.com/

 

공부하는 돌맹이

 

stonebig.tistory.com

 

쓰레기 값이 들어오는 문제였다. 그래서 들어온 버퍼 사이즈만큼 받아오게 코드를 짰다.

처음에는 for문을 통해서 들어온 사이즈만큼 반복시켜줬다.

for(int i =0; i<recv_size;++i)

이렇게 짰을 경우 사실 불필요하게 많은 반복문이 돌아가기 때문에 돌밍님께서 개행문자를 넣는것을 알려주셨다. 그래서 코드를 수정했다.

buf[recv_size] = '\\0';
cout << "Recv Data : " << buf << endl;

잘 동작을 하는데 중간에 인터럽트가 발생했다.

이유를 어떻게 찾아야지 하며 고민하다가 VS의 호출스택을 찾아봤는데, recv_size가 -1일때 배열에 접근해서 문제가 생겼었다. 그래서 예외처리를 해줬다.

if(recv_size > 0)
	buf[recv_size] = '\\0';
cout << "Recv Data : " << buf << endl;
cout << "Recv Len : " << recv_size << endl;

잘 작동하지만 while문임에도 계속 서버와 클라이언트간의 연결이 끊어져서 왜일까 하다가 유니티의 클라이언트쪽 코드를 보고 문제점을 찾았다.

 //stream.Close();
 //conn_sock.Close();

연결을 끊고 있는데 내가 왜 끊어지나 하고 있었다. 이 .. 멍충이!

당장 주석처리 해놓고 결과를 확인했더니 연결이 끊기지않고 잘 동작했다.

나이스!!!!!!!!!

 

728x90

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

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