Network Project (중간 보고) GIS Messenger (Geographic Information System & Messenger) 교수명 : 임효택 교수님 조 원 : 98003177 김 운기 20011568 김 민주 20011579 김 주도
목 차 프로젝트 진행 상황 프로젝트 중간 현황 보고 프로젝트 진행 중 어려운 점 프로젝트 남은 과제 목 차 프로젝트 진행 상황 프로젝트 중간 현황 보고 프로젝트 진행 중 어려운 점 프로젝트 남은 과제 2-1) PtoP 방식이란? 2-2) Client/Server vs P2P 2-3) 중간 현황
1. 프로젝트 진행 상황 : 중간점검 2 ~ 25 6/3 비고 8 20 11 5/6 날짜 업무 3단계 발표 (완료) 2 단계 발표 중간점검 1 완료 1 단계 발표 (제안서) 아이템 선정
2-1) PtoP(Peer To Peer)방식이란? 기존의 서버와 클라이언트 개념이나 공급자와 소비자 개념에서 벗어나 다른 서버를 거치지 않고 개인 컴퓨터끼리 직접 연결하고 검색함으로써 모든 참여자가 공급자인 동시에 수요자가 되는 형태로 컴퓨터 사이의 직접적 교환을 통한 컴퓨터 리소스의 공유입니다. 혼합형 p2p (hybrid p2p) : 어느 정도 서버의 도움을 얻어서 개인간 접속을 실현하는 방식 - ex) MSN메신저, 소리바다 순수 p2p(pure p2p) : 클라이언트 상호간에 미리 주소(IP address) 등의 개인정보를 공유하여 서버 없이 직접 연결하는 방식 - ex) 냅스터(MP3다운), 당나귀(eDonkey) -> 앞의 경우에도 접속 및 검색 단계 이후는 뒤의 경우와 동일하게 개인끼리 직접 정보를 공유하고 교환하게 된다.
Client/Server Architecture 2-2) Client/Server vs P2P Client/Server Architecture server client server centric unidirectional peer P2P Architecture distributed bidirectional 클라이언트/서버 환경에서 서비스 제공자(서버)는 일방적으로 수요자(클라이언트)에게 제공하는 방식이다. P2P에서는 하나의 말단 사용자가 서버이자 클라이언트 역할을 한다. 한군데로 부하가 걸리지 않기 때문에 상당히 무지막지한 작업들도 단순 무식한 방식으로 해결이 가능하다.
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘File’메뉴부분 화면 IP Address 를 입력하여 상대와 연결가능 기 본 화 면
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘File’메뉴부분 소스 void CContactView::AcceptSock() { unsigned int PeerPort; CString PeerAddress; CNetSocket* NewSock = new CNetSocket(); ListenSocket->Accept(*NewSock); NewSock->Init(); NewSock->GetPeerName(PeerAddress, PeerPort); //클라이언트 아이피랑 포트 //받아오는 함수 SetOnline(IP(PeerAddress), NewSock); } 소켓의 이 함수를 이용하여 클라이언트 IP랑 Port 받아오는 함수
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 화면 - Send instant message 부분
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 소스 - Send instant message 부분 void CConversation::OnSend() { MESSAGE *Msg = new MESSAGE; m_SendMsg.GetWindowText(Msg->Message, m_SendMsg.GetWindowTextLength() + 1); if (!strcmp(Msg->Message, "\r\n")) m_SendMsg.SetWindowText(""); return; } if (!stricmp(Msg->Message, "")) m_SendMsg.SetFocus();
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 소스 - Send instant message 부분 else // 메시지 전송 { char buf[1024]; strcpy(buf, Msg->Message); Msg->To = Contact; Msg->CallingDialog = this; PluginsMessageSent(Msg->To, buf); ReceivedMessage(1, (LPARAM) nstrdup(buf)); strcpy(Msg->Message, buf); ::SendMessage(GetApp()->View->GetSafeHwnd(), WM_SENDTHISMESSAGE, 0, (LPARAM) Msg); } m_SendMsg.SetFocus(); m_SendMsg.SetWindowText(""); OnChangeSendmsg();
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 화면 - lock/unlock 부분
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 소스 - lock/unlock 부분 void CConversation::OnBlock() { if (Contact->Flags & CFL_BLOCKED) ::SendMessage(GetApp()->View->GetSafeHwnd(), WM_BLOCKTHISCONTACT, 0, (LPARAM) Contact); } else if (Contact->Flags & CFL_TRANSFER) MessageBox("You cannot block a contact with a file transfer in progress", "Block contact",MB_OK|MB_ICONSTOP); return; ::SendMessage(GetApp()->View->GetSafeHwnd(), WM_BLOCKTHISCONTACT, 1, (LPARAM) Contact);
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 화면 - Send File 부분
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Action’메뉴부분 소스 - Send File 부분 bool CFXFileSend::SendFile() //파일 보내기 { for (;;) unsigned long read; char buf[PACKET_SIZE]; if (Stop) Close(); Thread->TransferFailed(); return false; } ReadFile(hFile, buf, PACKET_SIZE, &read, NULL); //파일 내용 읽어 오기 if (!read) break; Send(buf, read); //파일 보내기 if (WSAGetLastError()) return false; else FileLen -= read; Thread->UpdateTransfered((int)read); if (FileLen <= 0) Thread->TransferComplete(); return true;
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Status’메뉴부분 화면 - Away 부분
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Tools’메뉴부분 화면 - Options부분
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명 ‘Help’메뉴부분 화면
3. 프로젝트 진행 중 어려운 점 : 4. 프로젝트 남은 과제 : Visual C++ 공부를 하면서 소스분석과 프로그램작성을 병행하기때문에 진도가 조금 더딘 면이 있음. 4. 프로젝트 남은 과제 : 지금의 메신저에 GIS 기능을 추가