UE4之网络编程--连接自定义服务器

来源:互联网 发布:java上溯造型 编辑:程序博客网 时间:2024/05/05 04:01

转载学习:http://blog.csdn.net/pizi0475/article/details/51780574

在虚幻引擎中连接自定义服务器

UE4 dedicated server是一个很好的游戏服务器,但是对于大厅和聊天服务器来说,我们要自行开发,通过UE4的socket组建很方便的和其他服务器建立连接

创建Socket

FSocket* Socket = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateSocket(NAME_Stream, TEXT("default"), false);

CreateSocket参数

  1. 类型
  2. 描述
  3. 是否强制UDP

 

设置地址

FString address = TEXT("127.0.0.1");int32 port = 19834;FIPv4Address ip;FIPv4Address::Parse(address, ip);TSharedRef addr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr();addr->SetIp(ip.GetValue());addr->SetPort(port);

 

连接服务器

 

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

如果返回True说明连接服务器成功.

 

发送消息

FString serialized = TEXT("loadPlayer|1");TCHAR *serializedChar = serialized.GetCharArray().GetData();int32 size = FCString::Strlen(serializedChar);int32 sent = 0;

 

发送内容FString转换成TCHAR*,格式化发送数据

bool successful = Socket->Send((uint8*)TCHAR_TO_UTF8(serializedChar), size, sent);

接受数据我们用到 HasPendingData 和Recv 函数在 FSocket 类中.

在工程中引用Sockets模块

PublicDependencyModuleNames.AddRange(   new string[]   {      "Core",      "CoreUObject",      "Engine",      "Sockets"   });

 同时记录一个地址:

UE4 Sockets多线程TCP通信

http://blog.csdn.net/zilisen/article/details/75007447