Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему 네트웍 라이브러리 설명서 이제완

Содержание

Client(USER)ITZSession캐릭터 객체ITZPersonSocket으로 연결보내기/받기 버퍼를 통해통신 ITZSession::GetPerson() 함수를 통해 캐릭터 객체에 접근 1 : 1 : 1클라이언트 – 세션 - 캐릭터라이브러리의 사용에서 ITZSession객체의 포인터만 있으면
네트웍 라이브러리 설명서이제완 Client(USER)ITZSession캐릭터 객체ITZPersonSocket으로 연결보내기/받기 버퍼를 통해통신 ITZSession::GetPerson() 함수를 통해 캐릭터 객체에 접근 1 ITZSessionITZRecvBufferITZSendBufferITZPerson캐릭터 구현클래스ITZPersonITZSesson 구조ITZSession 주요 함수GetRecvBuffer()	받기 버퍼 포인터 얻어오기GetSendBuffer()	보내기 버퍼 포인터 얻어오기GetPerson()	Person객체 포인터 얻어오기GetState()	세션 상태 얻어오기CLIENT상속 SESSION의 상태SESSION_STATE_NONESESSION_STATE_CONNECTEDSESSION_STATE_ESTABLISHEDSESSION_STATE_DISONNECTEDSession의 상태는 ITZSession::GetState() 함수를 호출하여 알 수 있다세션이 활성화 되지 않음세션의 보내기/받기 버퍼 클래스 멤버함수CreateRecvBuffer( SI32 size )	:버퍼 생성ClearBuffer()		:버퍼 비우기GetRecvParam( … )		:iocp호출을 위한 ITZNetworkThreadITZSessionFactoryITZSessionManagerITZNetIOCPITZListen구현 클래스상속Session들의 목록이다내부적으로 두 개의 리스트가 있는데 대기중인 세션들의 리스트와, 활성화된 세션들의 while( 클래스가 종료 할 때 까지 반복 ) {   pClass->Update(); 프로토콜 구현하기I하나의 프로토콜이 구동되기 위해서는 ITZNetworkThread를 상속 받은 프로토콜 구현 클래스와, 그 프로토콜 구현하기II구현 클래스 작성 - ITZNetworkThread를 상속 받아서 클래스를 작성한다구현 클래스에 멤버로 프로토콜프로토콜ClientClientClient프로토콜인증서버프론트서버Main Classthreadthreadthread 클라이언트 접속 과정클라이언트가 서버의 열린 포트로 접속을 시도한다서버의 ITZListen객체가 클라이언트의 접속을 감지하고 ClientITZListen threadITZSessionManagersessionsessionsessionsession대기중인 세션 리스트활성화된 세션 리스트sessionsessionsessionsession sessionsessionsessionsession SessionFactory가 무슨일을 하는가? 서버와 클라이언트의 세션 활성화
Слайды презентации

Слайд 2 Client
(USER)
ITZSession
캐릭터 객체
ITZPerson

Socket으로 연결
보내기/받기 버퍼를 통해
통신
ITZSession::GetPerson() 함수를 통해

Client(USER)ITZSession캐릭터 객체ITZPersonSocket으로 연결보내기/받기 버퍼를 통해통신 ITZSession::GetPerson() 함수를 통해 캐릭터 객체에 접근

캐릭터 객체에 접근
1 :

1 : 1

클라이언트 – 세션 - 캐릭터

라이브러리의 사용에서 ITZSession객체의 포인터만 있으면 송수신 버퍼를 통해 세션 객체와 연결된 클라이언트와 통신할 수 있고, 세션 객체와 연결된 캐릭터 객체에 접근 할 수 있다


Слайд 3 ITZSession
ITZRecvBuffer
ITZSendBuffer
ITZPerson
캐릭터 구현클래스
ITZPerson


ITZSesson 구조
ITZSession 주요 함수
GetRecvBuffer() 받기 버퍼 포인터 얻어오기
GetSendBuffer() 보내기

ITZSessionITZRecvBufferITZSendBufferITZPerson캐릭터 구현클래스ITZPersonITZSesson 구조ITZSession 주요 함수GetRecvBuffer()	받기 버퍼 포인터 얻어오기GetSendBuffer()	보내기 버퍼 포인터 얻어오기GetPerson()	Person객체 포인터 얻어오기GetState()	세션 상태 얻어오기CLIENT상속

버퍼 포인터 얻어오기
GetPerson() Person객체 포인터 얻어오기
GetState() 세션 상태 얻어오기
CLIENT


상속


Слайд 4 SESSION의 상태
SESSION_STATE_NONE
SESSION_STATE_CONNECTED
SESSION_STATE_ESTABLISHED
SESSION_STATE_DISONNECTED
Session의 상태는 ITZSession::GetState() 함수를 호출하여 알 수

SESSION의 상태SESSION_STATE_NONESESSION_STATE_CONNECTEDSESSION_STATE_ESTABLISHEDSESSION_STATE_DISONNECTEDSession의 상태는 ITZSession::GetState() 함수를 호출하여 알 수 있다세션이 활성화 되지

있다
세션이 활성화 되지 않음
세션의 연결이 성공함
패킷 송수신 가능 상태는

아님( 단지 연결만… )

세션이 완벽하게 연결됨
정상적인 패킷 송수신 가능 상태

접속이 끊어짐
서버의 경우 클라이언트의 로그 아웃 처리가 필요하고,
클라이언트의 경우 서버로의 재접속이 필요한 상태


Слайд 5 보내기/받기 버퍼 클래스 멤버함수
CreateRecvBuffer( SI32 size ) :버퍼 생성
ClearBuffer() :버퍼

보내기/받기 버퍼 클래스 멤버함수CreateRecvBuffer( SI32 size )	:버퍼 생성ClearBuffer()		:버퍼 비우기GetRecvParam( … )		:iocp호출을

비우기
GetRecvParam( … ) :iocp호출을 위한 인자 추출
Completion( SI32 siRecvSize ) :iocp완료처리

주로

사용하는 함수
GetFirstPacket() :첫번째 패킷 포인터를 얻어온다
(패킷이 하나도 없으면 NULL반환)
RemoveFirstPacket() :첫번째 패킷을 버퍼에서 지운다

CreateSendBuffer( SI32 size ) :버퍼 생성
ClearBuffer() :버퍼 비우기
GetSendParam( … ) :iocp호출을 위한 인자 추출
Completion( SI32 siSentBytes ) :iocp완료처리
IsReadyToSend() :보낼 데이터가 있는지 여부

주로 사용하는 함수
Write( char *pPacket ) :패킷을 버퍼에 쓴다

ITZRecvBuffer

ITZSendBuffer


Слайд 6
ITZNetworkThread
ITZSessionFactory
ITZSessionManager
ITZNetIOCP
ITZListen
구현 클래스


상속
Session들의 목록이다
내부적으로 두 개의 리스트가 있는데 대기중인

ITZNetworkThreadITZSessionFactoryITZSessionManagerITZNetIOCPITZListen구현 클래스상속Session들의 목록이다내부적으로 두 개의 리스트가 있는데 대기중인 세션들의 리스트와, 활성화된

세션들의 리스트와, 활성화된 세션들의 리스트가 있다
외부와의 소켓 통신을 담당.
SessionManager의

Session목록을 참조하여
모든 Session의 보내기 받기 버퍼의 데이터를 지속적으로 송수신하여 갱신해 준다

서버에서 클라이언트들이 들어오는 입구이다
스레드로 포트를 감시하다가 새로운 클라이언트가 들어오면 SessionManager에 새로운 세션을 활성화 해준다

SessionManager의 목록을 만들어준다
(지정한 수 만큼의 세션 객체와 캐릭터 객체를 실제로 메모리에 생성해준다)

프로토콜 당 하나의 스레드가 동작한다
이 스레드는 SessionManager목록을 반복하면서
SessionProc()함수를 호출하여 패킷 처리를 구현 할 수 있도록 해준다

protocol

내부적으로 두 개의 스레드가 작동

내부적으로 하나의 스레드가 작동

서버 프로토콜 구성


Слайд 7 while( 클래스가 종료 할 때 까지 반복 )

while( 클래스가 종료 할 때 까지 반복 ) {  pClass->Update();

{

pClass->Update();
// 가상 함수

Update()를 호출. 패킷 처리 외에 매 프레임당 처리해야 할 것들을 Update()에서 구현하자


for( SessionManager의 목록에 등록되어 활성화 된 Session객체 수 만큼 반복 ) // 연결된 모든 세션들을 처리
{

if( pSession->GetState() == SESSION_STATE_DISCONNECTED ) {
// 현재 세션이 클라이언트와 연결이 끊어졌다면,,

pClass->LogOut( pSession );
// 가상 함수 LogOut을 현재 세션을 넘겨서 호출한다. (로그아웃처리)

pClass->GetSessionManager()->DelSession( pSession );
} else {
// 현재 세션이 정상적으로 클라이언트와 연결되어 있다면

ITZNetworkThread->SessionProc( pSession );
// 가상 함수 SessionProc를 현재 세션 포인터를 넘겨서 호출한다. (패킷처리)

}
}
}


* pClass는 스레드가 생성될때 넘겨받은 ITZNetworkThread객체의 포인터

ITZNetworkThread의 스레드 처리 과정

thread


Слайд 8 프로토콜 구현하기I
하나의 프로토콜이 구동되기 위해서는
ITZNetworkThread를 상속 받은

프로토콜 구현하기I하나의 프로토콜이 구동되기 위해서는 ITZNetworkThread를 상속 받은 프로토콜 구현 클래스와,

프로토콜 구현 클래스와, 그 멤버로써
ITZSessionFactory, ITZSessionManager, ITZNetIOCP 객체가 반드시

필요하고,
서버의 경우에는 ITZListen 객체도 필요하다

ITZNetworkThread 클래스는 기본적으로
ITZSessionManager, ITZNetIOCP, ITZListen 객체를 멤버로 가지고 있다.
따라서 구현 클래스에서 별도로 선언해 줄 필요가 없으며, 객체의 획득은
GetSessionManager(), GetNetIOCP(), GetListen() 함수를 이용한다.
물론 각 객체들의 초기화는 구현 클래스에서 직접 해주어야 한다.

ITZSessionFactory 객체는 구현 클래스에서 직접 선언하고 초기화해 주어야한다

Слайд 9 프로토콜 구현하기II
구현 클래스 작성 - ITZNetworkThread를 상속 받아서

프로토콜 구현하기II구현 클래스 작성 - ITZNetworkThread를 상속 받아서 클래스를 작성한다구현 클래스에

클래스를 작성한다
구현 클래스에 멤버로 SessionFactory객체를 생성한다

초기화
생성자 또는 초기화 함수에서

구현해야 할 것 들

제일 먼저 SessionFactory를 초기화한다.
m_SF.CreateFactory( GetSessionManager(), 1000, 30000, 30000 );








Слайд 10 프로토콜
프로토콜
Client
Client
Client
프로토콜
인증서버
프론트서버
Main Class
thread
thread
thread

프로토콜프로토콜ClientClientClient프로토콜인증서버프론트서버Main Classthreadthreadthread

Слайд 11 클라이언트 접속 과정
클라이언트가 서버의 열린 포트로 접속을 시도한다
서버의

클라이언트 접속 과정클라이언트가 서버의 열린 포트로 접속을 시도한다서버의 ITZListen객체가 클라이언트의 접속을 감지하고

ITZListen객체가 클라이언트의 접속을 감지하고







Слайд 12
Client
ITZListen thread
ITZSessionManager
session
session
session
session
대기중인 세션 리스트
활성화된 세션 리스트
session
session
session
session

ClientITZListen threadITZSessionManagersessionsessionsessionsession대기중인 세션 리스트활성화된 세션 리스트sessionsessionsessionsession

Слайд 13 session
session
session
session

sessionsessionsessionsession

Слайд 14 SessionFactory가 무슨일을 하는가?

SessionFactory가 무슨일을 하는가?

  • Имя файла: 네트웍-라이브러리-설명서-이제완.pptx
  • Количество просмотров: 153
  • Количество скачиваний: 0