I got this piece of code off the internet and if I put the contents in a constructor, it connects to my server.
If it put the contents in a blueprint node, and call it by Begin Play, it fails to connect. Why?
UFUNCTION(BlueprintCallable, Category = ServerAPI, meta = (FriendlyName = "Connect To Server"))
virtual void ConnectToServer(FString address = "121.0.0.1", int32 port = 1337);
void AServerAPI::ConnectToServer(FString address, int32 port)
{
Logger::log("Connect to server", address, port);
Socket = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateSocket(NAME_Stream, TEXT("default"), false);
FIPv4Address ip;
FIPv4Address::Parse(address, ip);
TSharedRef < FInternetAddr > addr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr();
addr->SetIp(ip.GetValue());
addr->SetPort(port);
bool connected = Socket->Connect(*addr);
Logger::log("Connected status: ", address, port, connected);
if (connected == false)
{
return;
}
FString serialized = TEXT("loadPlayer|1");
TCHAR *serializedChar = serialized.GetCharArray().GetData();
int32 size = FCString::Strlen(serializedChar);
int32 sent = 0;
bool successful = Socket->Send((uint8*)TCHAR_TO_UTF8(serializedChar), size, sent);
Logger::log("Send message status: ", successful);
}