1
This commit is contained in:
parent
03489644bf
commit
ac34ca2d3b
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ namespace a8
|
||||
{
|
||||
struct UdpPacket
|
||||
{
|
||||
char* buf = nullptr;
|
||||
const char* buf = nullptr;
|
||||
int buf_len = 0;
|
||||
sockaddr_in remote_addr;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user