문제 설명
구동환경.
- 채팅서버 : 라즈베리파이
- 채팅 클라이언트 : 우분투 (가상머신)
필수 구현기능.
- 채팅방 로그인 / 로그아웃 기능
- 채팅시 로그인 된 ID 뒤에 메세지 표시
- 빌드 시 make / cmake 사용
추가 구현기능.
- 다수의 채팅방 생성 / 관리
- 파일전송
- 채팅 메세지 검색
제약 조건.
- 서버는 멀티프로세서 (fork()) 사용
- 부모프로세스와 자식 프로세스들 사이에 IPC(pipe만) 사용
- 채팅 서버 데몬으로 등록
- select() / epoll() 함수 사용 불가
- 메세지 큐 / 공유 메모리 사용 불가
- C로만 구현 (C++ 사용 불가)
추가 사항.
- 보고서 제출 : 프로젝트 개요 / 개발 일정 / 구현 내용 / 느낀점과 추후 방향
환경세팅
작업환경.
- 가상머신 상의 ubuntu와 라즈베리파이 모두 ssh로 접속해서 작업
네트워크 설정.
- 가상머신의 네트워크 설정을 브리지로 설정
- IP 확인하고 두 환경 간에 ping 테스트

설계
공유 메모리를 사용 할 수 없다 -> pipe를 이용한 ipc 통신
- 부모->자식, 자식->부모 프로세스 통신이 필요하므로 파이프를 2개 사용해야한다.
- 부모프로세스가 자식 프로세스의 입/출력을 관리해야함
신호처리 -> 비동기 신호처리
- 자식 프로세스의 신호를 부모 프로세스가 감지, 처리 수행 (ex. SIGHLD)
프로세스 관리 -> 부모 프로세스와 자식프로세스 (fork())
- 서버를 데몬화 해야한다
참고 포스팅
멀티 프로세스를 활용한 다중 클라이언트 TCP 통신, 좀비 프로세스 삭제
단일 프로세스를 활용하여 TCP 통신을 할 때엔 하나의 프로세스가 하나의 클라이언트만 받았다. 그도 그럴것이 TCP의 정의 자체가 (IP + Port)간의 신뢰성 있는 데이터 전달이기 때문에 다른 클라이
do-my-best.tistory.com
소켓 프로그래밍. (Socket Programming)
1. 소켓(Socket) 만약 네트워크와 관련된 프로젝트를 진행하면서, 사용자(User)의 관점이 아닌, 개발자(Developer)의 관점에서 네트워크를 다뤄본 경험이 있다면, "소켓(Socket)"이라는 용어가 아주 낯설
recipes4dev.tistory.com
리눅스 환경에서 다중 클라이언트 채팅 시스템 구현
시스템프로그래밍 소켓 통신 과제 리뷰
velog.io
VEDA 바로가기 : www.vedacademy.co.kr
VEDA(한화비전 아카데미) 영상으로 확인하기 : https://url.kr/zy9afd
본 후기는 VEDA(한화비전 아카데미) 1기 학습 기록으로 작성되었습니다.
#VEDA #개발의한계를veda #한화비전 #엣지디바이스 #한화비전아카데미 #KDT
'교육관련 > 한화비전 VEDA 수강일지' 카테고리의 다른 글
| [VEDA 1기 수강일지] 48일차 - 라즈베리파이와 GPIO (2) : 조도센서, 멀티스레드 실습 (0) | 2024.09.30 |
|---|---|
| [VEDA 1기 수강일지] 42일차 - linux 미니프로젝트 : tcp 통신을 이용한 채팅프로그램 (2) (0) | 2024.09.13 |
| [VEDA 1기 수강일지] 21일차 - Linux 기초 (1) : 파일 조회 등 (0) | 2024.08.12 |
| [VEDA 1기 수강일지] 18일차 - Qt / C++ (3) : MainWindow, TextEditor (0) | 2024.08.07 |
| [VEDA 1기 수강일지] 17일차 - Qt / C++ (2) : 다양한 위젯, layout (0) | 2024.08.06 |
댓글