I'm FanJae.

[C++ Server, C# Client] Day 3. GUI 클라이언트 설계 및 Server 버그 수정 본문

Toy Project/Multi Room Cheating Server

[C++ Server, C# Client] Day 3. GUI 클라이언트 설계 및 Server 버그 수정

FanJae 2024. 9. 26. 23:54

1. 레이아웃 설계

- 본인의 경우 Client 쪽은 가볍게 설계 하는 것이 목적이였다. (서버를 테스트 하기 위한 목적이 더 컸다.)

- 따라서, Client의 디자인은 기본에 충실하였다.

- 각 기능은 아래와 같은 기능을 수행한다.

연결 : IP와 PORT를 입력하면 서버와 연결을 진행한다.

새로고침 : Room list를 받아와서 보여준다. 사용자는 이곳에서 본인이 원하는 방에 입장할 수 있다.

입장 : Room List에서 선택된 방으로 입장한다.

방만들기 : 방을 만드는 폼을 별도로 띄워서 방을 생성하면 서버가 이를 받아서 하나의 방을 만들어준다.

방을 만든 참가자는 채팅방에 바로 입장하도록 처리할 것이다.


2. 서버 버그 수정

- 본 포스팅을 작성하기 전, C# 클라이언트로 연결 시도를 했으나, 번번이 실패했다.

- 원인은 serverAddr 구조체 설정에서 문제가 발생하였다.

serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
// serverAddr.sin_port = atoi(argv[1]);
serverAddr.sin_port = htons(atoi(argv[1]));

 

2-1. htons()

- Host To Network Short.

- 컴퓨터가 데이터를 메모리에 저장하거나 전송할 때 바이트 순서는 컴퓨터마다 차이가 존재한다.

- Little Endian과 Big Endian이 존재한다.

- 네트워크 통신에서는 데이터가 전송될 때 네트워크 바이트 순서인 빅 엔디안으로 변환이 필요하다.

- 포트 번호가 16비트 값이기 때문에 htons()로 변환해야 한다.


※ 이외 작업을 진행하였지만, 서버에 추가하는 과정에서 핸들러를 별도로 분리시키는 작업이 더 필요할 듯하다.

 

TODO

1) Server

- 핸들러 로직 분할 및 동기화 처리 필요

2) Client

- 각 상황에 맞는 버튼 이벤트 구현 필요

 

Comments