This commit is contained in:
azw 2023-04-19 03:28:03 +00:00
parent 03489644bf
commit ac34ca2d3b
2 changed files with 22 additions and 7 deletions

View File

@ -12,6 +12,7 @@
#include <functional>
#include <thread>
#include <a8/a8.h>
#include <a8/udplistener.h>
namespace a8
@ -19,7 +20,10 @@ namespace a8
long long UdpPacket::GetRemoteKey()
{
return 0;
unsigned long addr = remote_addr.sin_addr.s_addr;
int port = remote_addr.sin_port;
long long key = a8::MakeInt64(addr, port);
return key;
}
struct UdpListenerImpl
@ -101,8 +105,8 @@ namespace a8
{
if(!ActiveStart())
return;
struct sockaddr_in destAddr;
socklen_t addrLen = sizeof(sockaddr_in);
struct sockaddr_in from_addr;
socklen_t addr_len = sizeof(sockaddr_in);
char recv_buf[1024 * 64];
int buflen = sizeof(recv_buf);
while (!shutdown) {
@ -110,10 +114,15 @@ namespace a8
recv_buf,
buflen,
0,
(struct sockaddr*)&destAddr,
(socklen_t*)&addrLen);
(struct sockaddr*)&from_addr,
(socklen_t*)&addr_len);
if(ret > 0) {
master->on_recv_packet(nullptr);
a8::UdpPacket* pkt = new a8::UdpPacket();
pkt->buf = (char*)malloc(ret + 1);
memmove((void*)pkt->buf, recv_buf, ret);
pkt->buf_len = ret;
pkt->remote_addr = from_addr;
master->on_recv_packet(pkt);
}
}
}
@ -153,6 +162,12 @@ namespace a8
void UdpListener::SendUdpPacket(UdpPacket* pkt)
{
//a8::XPrintf("SendUdpPacket buflen:%d\n", {pkt->buf_len});
::sendto(impl_->listen_socket,
pkt->buf,
pkt->buf_len,
0,
(struct sockaddr*)&pkt->remote_addr, sizeof(pkt->remote_addr));
}

View File

@ -9,7 +9,7 @@ namespace a8
{
struct UdpPacket
{
char* buf = nullptr;
const char* buf = nullptr;
int buf_len = 0;
sockaddr_in remote_addr;