NUdpClient
NUdpClient类提供封装好的Udp客户端接口,可直接用于Udp通信
- 接口
| 接口 | 返回值 | 说明 |
|---|---|---|
| void SetBindPort(int port); void SetBindPort(int port, std::error_code& ec); | port:端口号;ec:错误码 | 设置当前绑定的端口号 |
| void SetRemoteIPHost(NIPEndPointPtr remote); void SetRemoteIPHost(NIPEndPointPtr remote, std::error_code& ec); | remote:远端IP及端口号;ec:错误码 | 设置远端端口号 |
| void Close(); void Close(std::error_code& ec); | ec:错误码 | 关闭通信 |
| void Send(char* data, size_t offset, size_t size, bool bAsync = false, NTransmitCallback callback = nullptr); | data:发送的数据;offset:发送数据的偏移;size:发送数据的数据量;bAsync:是否为异步发送;callback:异步回调函数 | 发送数据 |
| void SendTo(char* data, size_t offset, size_t size, NIPEndPointPtr remote, bool bAsync = false, NTransmitCallback callback = nullptr); | data:发送的数据;offset:发送数据的偏移;size:发送数据的数据量;bAsync:是否为异步发送;callback:异步回调函数 | 发送数据到指定IP及端口号 |
| void Receive(char* data, size_t offset, size_t size, bool bAsync = false, NTransmitCallback callback = nullptr); | data:接收的数据;offset:接收数据的偏移;size:接收数据的数据量;bAsync:是否为异步接收;callback:异步回调函数 | 接收信息 |
| void ReceiveFrom(char* data, size_t offset, size_t size, NIPEndPointPtr remote, bool bAsync = false, NTransmitCallback callback = nullptr); | data:接收的数据;offset:接收数据的偏移;size:接收数据的数据量;bAsync:是否为异步接收;callback:异步回调函数 | 从对应IP及端口号接收到信息 |
| void JoinMulticastGroup(const std::string& ip); | ip:加入的多播组ip | 加入多播组 |
| void LeaveMulticastGroup(const std::string& ip); | ip:离开的多播组ip | 离开多播组 |
| void SetBroadcast(bool value); | value:是否开启广播 | 设置广播 |
示例代码:
cpp
void Udp::Init()
{
auto udpClient = NNetWorkManager::CreateUdpClient();
udpClient->SetBindPort(8080);
}
void Udp::SendMsg()
{
if (udpClient)
{
NIPEndPointPtr endPoint1 = NNetWorkManager::CreateIPEndPoint(“127.0.0.1”, 8081);
std::string sendmsg = “TestSend”;
udpClient->SendTo(sendmsg.data(), 0, strlen(sendmsg.data()), endPoint1);
}
}
void Udp::RecvMsg()
{
if (udpClient)
{
NIPEndPointPtr endPoint1 = NNetWorkManager::CreateIPEndPoint(“127.0.0.1”, 8081);
char buffer[512];
udpClient->ReceiveFrom(buffer, 0, 512, endPoint1);
}
}
void Udp::Close()
{
std::error_code ec;
if (udpClient)
{
udpClient->Close(ec);
}
}
