대화형 칠판구현한 소켓프로그램 레포트(UDP와 TCP모두 구현)
- 최초 등록일
- 2008.03.04
- 최종 저작일
- 2007.05
- 14페이지/ 압축파일
- 가격 2,000원
소개글
○ 본 설계 프로젝트에서는 Visual C++ 6.0으로 MFC를 이용하여 마우스를 이용해 화면에 그림을 그려서 그 내용을 보냄으로써 간단한 메시지 전송 프로그램을 만들어 보았다.
○ 네이트온 메신저 프로그램을 보면 이야기하는 사람과 같이 볼수 있는 화이트보드라는 것을 구현해 보았다.
○ 간단히 의사소통도 가능한 프로그램을 제작해 보았다.
컴파일 실행환경
Microsoft visual c++, MFC
본문내용
□ 구현원리
○ 구현은 크게 마우스로 그림을 그리고 화면에 표시하는 부분과 그려진 그림을 전송하는 부분으로 나눌 수 있다.
- 그림을 그리고 화면에 표시하는 부분의 원리
• 마우스로 그림의 종류를 선택하고 그림을 그린다. 자유곡선의 경우에는 마우스가 클릭된 상태에서 지나가는 모든 점을 직선으로 이어주는 것으로 구현할 수 있다. 네모와 동그라미는 MFC의 CDC 클래스의 멤버함수를 이용하면 쉽게 그릴 수 있고 지우개도 안쪽영역이 하얀 네모를 그리는 것으로 구현할 수 있다.
• 중요한 것은 프로그램이 최소화 되어 있었다던가 다른 창에 가려져 있었다가 다시 Focus를 받아 화면에 나타나는 경우에 가려져 있었던 부분을 다시 그려주어야 한다는 것이다. 이를 위해 그려져 있었던 모든 그림을 어딘가에 저장을 하고 있어야 한다. 그래서 이 그림을 저장할 수 있는 공간을 array와 linked list를 이용해서 만들었고 그림이 그려질 때마다 이 공간에 모두 저장을 하였다. 이렇게 하면 전체화면을 지우고 싶은 경우에 이 공간을 완전히 비우고 화면을 다시 그리도록 하면 그려질 그림이 모두 사라졌으므로 화면이 모두 지워지는 효과를 얻을 수 있을것이다.
- 그려진 그림을 전송하는 부분의 원리
• TCP로 구현할 경우에는 Flow Control, Error Control 등이 자동적으로 되므로 구현이 되어 특별하게 할 것은 없어 소켓에서 지원하는 멤버함수를 사용하였다.
• 소켓 패킷의 구성
Data의 종류
점의 좌표
점의 좌표
□ 주요 클래스 설명
○ 서버 소켓 클래스
- 서버소켓에 해당하는 기능을 CseverSocket이라고 클래스에 구현하였다.
- 이 클래스는 CSocket 클래스에서 상속 받은 클래스로서 서버에서 클라이언트의 접속요청을 받아들여 클라이언트와 서버의 데이터 소켓을 연결시켜 주는 역할을 한다.
- 이 클래스는 실제 데이터를 주고 받는데는 관여하지 않았다.
○ 데이터 소켓 클래스
- CSocket에서 상속 받은 클래스로 데이터를 실제로 주고 받는데 사용되는 클래스이다.
○ 소켓 리스트 클래스
- 받아오는 데이터를 링크드리스트를 이용하여 저장해 놓는 클래스이다.
- 화면에 다시 그릴 때 처음 데이터부터 불러와 다시 그러야 하기에 링크드리스트르 이용해서 받은 데이터를 저장해 놓았다.
○ 버퍼와 Socket의 포맷 구조체
- Buffer와 Stock를 이용하였다.
- 데이터를 임시 저장하거나 보낼 때 이용하는 소켓 패킷의 데이터 부분의 포맷이다.
압축파일 내 파일목록
ChalkTCP.zip
ChalkUDP.zip
소켓플젝.hwp
참고 자료
없음