상세 컨텐츠

본문 제목

[Unreal 게시판] FSocket으로 접속차단을 감지하는 방법 관련

게임엔진관련/언리얼 엔진

by AlrepondTech 2016. 2. 17. 15:21

본문

반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처: http://mypi.ruliweb.daum.net/mypi.htm?id=pokapoka&num=9465

 

Question>

안녕하세요.
FSocket으로 서버접속후 서버가 죽거나 서버가 disconnect 시킬때를 감지려면 어떻게 해야 하나요?

현재 코드는 아래와 같습니다.

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Trying to connect.")));
ConnectionSocket = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateSocket(NAME_Stream, TEXT("default"), false);

FString address = TEXT("127.0.0.1");
int32 port = 6000;
FIPv4Address ip;
FIPv4Address::Parse(address, ip);

TSharedRef<FInternetAddr> addr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr();
addr->SetIp(ip.GetValue());
addr->SetPort(port);

bool connected = ConnectionSocket->Connect(*addr);

if (connected)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Connect success.")));
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Connect fail.")));
}

접속은 잘되는데 서버를 죽였을때 어떻게 체크를 해야할까요?

-------------------------------------------------------------

Answer>

2가지 방법이 가능하겠습니다.



1>GetConnectionState()를 사용하는 방법.
아래 source 참고하시고요.

if( ESocketConnectionState::SCS_Connected == ConnectionSocket->GetConnectionState() )
{
 //server와 연결이 유효함.^^
}
else
{
 //server와 연결이 끊겼음.^^;;;
}

위와 같이 하시면, 접속차단을 감지할 수 있습니다.^^



2>class를 재정의해서 Close() 함수를 재정의하는 방법.
class FScokect을 상속 받은 님만의 class FYourSocket을 만드시고,
거기에 있는 Close()라는 함수를 호출시 님만의 특별한 처리를 할 수 있도록 재정의하세요.

bool FYourSocket::Close()
{
 //server와 연결이 끊겼음.^^;;;
}

위와 같이 하시면, 접속이 끊어졌을 때, 
Close()가 호출되서 바로 감지할 수 있습니다.^^

이 방법의 경우, class ISocketSubsystem의 일부( CreateSocket(), ... )와 
class FSocketSubsystem[목표 운영체제(windows, iOS, ...)]의 일부를 수정하셔야 가능합니다.



둘중에 하나 고르세요~ ^^







Tag:
안기훈, Kee Hoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역