지난번에 언리얼 클라이언트에 protobuf를 추가하고 빌드와 간단한 테스트까지 해봤다.
이번에는 내가 만든 게임서버에 연결을 하고, 통신을 주고받아보자. (일단 평문통신으로)
언리얼 내장 소켓통신 라이브러리를 사용하기 위해 Client.Build.cs 에 모듈을 추가한다.
using UnrealBuildTool;
using System.IO;
public class Client : ModuleRules
{
public Client(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[]
{
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EnhancedInput",
"Sockets", // 추가됨
"Networking" // 추가됨
});
/*...*/
}
}
언리얼 에디터에서 ClientGameInstance 생성

이름은 ClientgameInstance로 지었다.
ClientGameInstance.h
UCLASS()
class CLIENT_API UClientGameInstance : public UGameInstance
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void ConnectToGameServer();
UFUNCTION(BlueprintCallable)
void DisconnectFromGameServer();
public:
class FSocket* Socket;
FString IpAddress = TEXT("127.0.0.1");
int16 Port = 7777;
};
ClientGameInstance.cpp
#include "ClientGameInstance.h"
#include "Sockets.h"
#include "Common/TcpSocketBuilder.h"
#include "Serialization/ArrayWriter.h"
#include "SocketSubsystem.h"
void UClientGameInstance::ConnectToGameServer()
{
Socket = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateSocket(TEXT("Stream"),TEXT("Client Socket"));
FIPv4Address Ip;
FIPv4Address::Parse(IpAddress, Ip);
TSharedRef<FInternetAddr> InternetAddr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr();
InternetAddr->SetIp(Ip.Value);
InternetAddr->SetPort(Port);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Connecting To Server"));
bool Connected = Socket->Connect(*InternetAddr);
if (Connected)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Connection Successed"));
// Session
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Connection Failed"));
}
}
void UClientGameInstance::DisconnectFromGameServer()
{
if (Socket)
{
ISocketSubsystem* SocketSubsystem = ISocketSubsystem::Get();
SocketSubsystem->DestroySocket(Socket);
Socket = nullptr;
}
}
언리얼 에디터 프로젝트 세팅- gameinstance를 우리가 만든걸로 설정

그리고 레벨 블루프린트를 열고 아래와 같이 설정한다.


이제 게임서버를 실행시킨 뒤에 연결을 해보자. (더미클라이언트는 빼고 실행했다.)


서버측(좌)에서도 새 session이 생성됐고, 언리얼 클라이언트 측에서도 성공적으로 연결됐다고 뜬다.
현재까지의 git 버전
클라이언트
Feat: ClientGameInstance · Dodontak/Project_Island_Client@81a0088
게임 인스턴스를 추가해 서버와 연결되도록 만듦.
github.com
서버
서버는 바뀐건 없고 그냥 솔루션 속성에서 더미 클라이언트를 시작하지 않게만 만들어줬다.

'프로젝트 > Project_Island' 카테고리의 다른 글
| 49. 언리얼 클라이언트 패킷 송신 (0) | 2026.04.30 |
|---|---|
| 48. 언리얼 클라이언트 패킷 수신 (0) | 2026.04.27 |
| 46. 언리얼 클라이언트에 Protobuf 추가하기 (0) | 2026.04.21 |
| 45. 언리얼 클라이언트 만들기 (0) | 2026.04.20 |
| 44. JobTimer (0) | 2026.04.18 |