1
This commit is contained in:
parent
03489644bf
commit
ac34ca2d3b
@ -12,6 +12,7 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
#include <a8/a8.h>
|
||||||
#include <a8/udplistener.h>
|
#include <a8/udplistener.h>
|
||||||
|
|
||||||
namespace a8
|
namespace a8
|
||||||
@ -19,7 +20,10 @@ namespace a8
|
|||||||
|
|
||||||
long long UdpPacket::GetRemoteKey()
|
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
|
struct UdpListenerImpl
|
||||||
@ -101,8 +105,8 @@ namespace a8
|
|||||||
{
|
{
|
||||||
if(!ActiveStart())
|
if(!ActiveStart())
|
||||||
return;
|
return;
|
||||||
struct sockaddr_in destAddr;
|
struct sockaddr_in from_addr;
|
||||||
socklen_t addrLen = sizeof(sockaddr_in);
|
socklen_t addr_len = sizeof(sockaddr_in);
|
||||||
char recv_buf[1024 * 64];
|
char recv_buf[1024 * 64];
|
||||||
int buflen = sizeof(recv_buf);
|
int buflen = sizeof(recv_buf);
|
||||||
while (!shutdown) {
|
while (!shutdown) {
|
||||||
@ -110,10 +114,15 @@ namespace a8
|
|||||||
recv_buf,
|
recv_buf,
|
||||||
buflen,
|
buflen,
|
||||||
0,
|
0,
|
||||||
(struct sockaddr*)&destAddr,
|
(struct sockaddr*)&from_addr,
|
||||||
(socklen_t*)&addrLen);
|
(socklen_t*)&addr_len);
|
||||||
if(ret > 0) {
|
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)
|
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
|
struct UdpPacket
|
||||||
{
|
{
|
||||||
char* buf = nullptr;
|
const char* buf = nullptr;
|
||||||
int buf_len = 0;
|
int buf_len = 0;
|
||||||
sockaddr_in remote_addr;
|
sockaddr_in remote_addr;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user