Network Project ( 중간 보고 )
GIS Messenger (Geographic Information System & Messenger)
교수명 : 임효택 교수님
조 원 : 98003177 김 운기 20011568 김 민주 20011579 김 주도
1. 프로젝트 진행 상황
2. 프로젝트 중간 현황 보고
3. 프로젝트 진행 중 어려운 점 4. 프로젝트 남은 과제
목 차
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 단계 발표 ( 제안서 )
완료 아이템 선정
완료 완료
기존의 서버와 클라이언트 개념이나 공급자와 소비자 개념에서 벗어나 다른 서버를 거치지 않고 개인 컴퓨터끼리 직접 연결하고 검색함으로써 모든 참여자가 공급자인 동시 에 수요자가 되는 형태로 컴퓨터 사이의 직접적 교환을 통한 컴퓨터 리소스의 공유입니다 . 혼합형 혼합형 p2p (hybrid p2p) : p2p (hybrid p2p) : 어느 정도 서버의 도움을 얻 어서 개인간 접속을 실현하는 방식
- ex) MSN 메신저 , 소리바다
순수 순수 p2p(pure p2p) : p2p(pure p2p) : 클라이언트 상호간에 미리 주소 (I P address) 등의 개인정보를 공유하여 서버 없이 직접 연결하는 방 식 - ex) 냅스터 (MP3 다운 ), 당나귀 (eDonkey)
->
->
앞의 경우에도 접속 및 검색 단계 이후는 뒤의 경우와앞의 경우에도 접속 및 검색 단계 이후는 뒤의 경우와 동일하게 개인끼리 직접 정보를 공유하고 교환하게 된다
동일하게 개인끼리 직접 정보를 공유하고 교환하게 된다 .
.
2-1) PtoP(Peer To Peer) 방식이란 ?
• 클라이언트 / 서버 환경에서 서비스 제공자 ( 서버 ) 는 일방적으로 수요자 ( 클라이언트 ) 에 게 제공하는 방식이다 .
• P2P 에서는 하나의 말단 사용자가 서버이자 클라이언트 역할을 한다 . 한군데로 부하가 걸리지 않기 때문에 상당히 무지막지한 작업들도 단순 무식한 방식으로 해결이 가능하다 .
2-2)
Client/Server vs P2Ppeer peer
peer
P2P Architecture
distributed bidirectional
Client/Server Architecture
server
client client client
server centric
unidirectional
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
기기 본본 화화 면면
‘
‘File’
File’메뉴부분 화면
메뉴부분 화면 IP AddressIP Address
를 를 입력하여입력하여
상대와 연결가능 상대와 연결가능
‘
‘File’
File’메뉴부분 소스
메뉴부분 소스2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
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 받아오는 함수
‘
‘Action’
Action’메뉴부분 화면
메뉴부분 화면- Send instant message - Send instant message
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
‘
‘Action’
Action’메뉴부분 소스
메뉴부분 소스- Send instant message - Send instant message
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
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();
return;
}
‘
‘Action’
Action’메뉴부분 소스
메뉴부분 소스- Send instant message - Send instant message
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
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, (LPARA M) Msg);
}
m_SendMsg.SetFocus();
m_SendMsg.SetWindowText("");
OnChangeSendmsg();
‘
‘Action’
Action’메뉴부분 화면
메뉴부분 화면- lock/unlock
- lock/unlock
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
‘
‘Action’
Action’메뉴부분 소스
메뉴부분 소스- lock/unlock
- lock/unlock
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
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;
}else
::SendMessage(GetApp()->View->GetSafeHwnd(), WM_BLOCKTHISCONTACT, 1, (LPARA M) Contact);
‘
‘Action’
Action’메뉴부분 화면
메뉴부분 화면- Send File - Send File
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
‘
‘Action’
Action’메뉴부분 소스
메뉴부분 소스- Send File - 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;
} }
‘
‘Status’
Status’메뉴부분 화면
메뉴부분 화면- Away
- Away
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
‘
‘Tools’
Tools’메뉴부분 화면
메뉴부분 화면- Options - Options
부분부분2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
‘
‘Help’
Help’메뉴부분 화면
메뉴부분 화면2-3) 프로젝트 중간 현황 보고 – 메뉴순서대로 설명
3. 프로젝트 진행 중 어려운 점 :
4. 프로젝트 남은 과제 :
지금의 메신저에 GIS 기능을 추가
Visual C++ 공부를 하면서 소스분석과 프로그램작성을 병행하기때문에 진도가 조금 더딘 면이 있음 .