HLW 채팅방 - Linux C 네트워크 프로그래밍 기술을 사용하여 개발된 다자간 채팅 도구
설치 및 배포
git clone https://github.com/fujie-xiyou/chat_room.git
그런 다음 chat_room.sql
데이터베이스로 가져오고 config.json
마지막으로 ./chat_room_srv
에 오류가 보고되지 않으면 서버가 성공적으로 시작됩니다.
그런 다음 config.json에서 서버 주소를 수정하고 마지막으로 ./chat_room_cli
수정합니다.
먼저 계정을 등록해주세요
데모 비디오
채팅방 비디오 데모
프로젝트 개요
- 본 프로젝트는 Linux C 네트워크 프로그래밍 기술을 이용하여 개발된 캐릭터 인터페이스 대화방으로, 기본 기능으로는 사용자 등록 및 로그인, 친구 추가, 비공개 채팅, 그룹 채팅 생성, 친구 초대, 그룹 채팅, 채팅 기록 보기 등이 있습니다. 파일 전송을 기다리세요.
프로젝트 디자인
- 본 프로젝트는 C/S 모델을 기반으로 설계되었으며 클라이언트와 서버 두 부분으로 나누어집니다. 클라이언트는 서버에 직접 연결되어 서버와 양방향으로 데이터를 교환합니다. 이를 대상 사용자에게 전달하면 모든 데이터 지속성 작업도 서버 측에서 완료됩니다.
- 클라이언트는 인터페이스 계층과 비즈니스 로직 계층(요청 계층)으로 구성되며, 서버는 비즈니스 로직 계층과 지속성 계층으로 구성됩니다.
- 데이터베이스 설계
- 이 프로젝트를 개발할 당시에는 데이터베이스 관련 과목을 체계적으로 공부하지 않았는데, 나중에 이 프로젝트의 데이터베이스 설계를 검토해보니 BC 패러다임에 부합하는 것으로 나타났습니다.
- 프로젝트 데이터베이스의 몇 가지 예가 그림에 나와 있습니다.
- 파일 전송 기능 설계 본 프로젝트의 클라이언트와 서버는 데이터 상호 작용을 위해 JSON을 사용하므로 파일 전송을 위해서는 특별한 처리가 필요합니다. 따라서 파일 전송 처리 방법에 대해 먼저 간략하게 소개합니다.
- 그림과 같이 사용자가 전송할 파일 이름을 입력한 후 시스템은 open() 시스템 호출을 사용하여 파일을 연 다음 read() 시스템 호출을 사용하여 지정된 바이트의 파일 내용을 읽고, 읽기의 반환 값을 데이터 패킷 필드의 크기로 기록한 다음 base6을 사용하여 파일 내용을 읽습니다. 4. 트랜스코딩하여 데이터 패킷의 데이터 필드에 결과를 기록한 후 데이터 패킷을 수신자에게 보낸 후 읽기 반환 값의 크기를 기준으로 모든 파일이 전송되었는지 여부를 판단합니다. 값이 읽기 크기 매개변수보다 작습니다. 그런 다음 파일을 닫고, 그렇지 않으면 읽기, 트랜스코딩 및 전송을 계속합니다.
- 수신자는 파일 패키지를 수신한 후 데이터 내의 데이터를 바이너리로 디코딩한 후, 데이터의 트랜스코딩 결과를 저장하는 버프에 있는 데이터를 크기 값에 따라 파일에 추가한다.