Skip to content

Commit

Permalink
Log source IP/port on incoming UDP data
Browse files Browse the repository at this point in the history
  • Loading branch information
CJLove committed Jul 6, 2024
1 parent 4c5de75 commit 87678f6
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
Binary file modified build/udpServer/CMakeFiles/unicastApp.dir/unicastApp.cpp.o
Binary file not shown.
9 changes: 9 additions & 0 deletions include/sockets-cpp/SocketCore.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@ class SocketCore {
#endif
}

ssize_t RecvFrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src, socklen_t *addrlen)
{
#ifdef _WIN32
return ::recvfrom(sockfd, reinterpret_cast<char*>(buf), static_cast<int>(len), flags, src, addrlen);
#else
return ::recvfrom(sockfd, buf, len, flags, src, addrlen);
#endif
}

ssize_t SendTo(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen) {
#ifdef _WIN32
return ::sendto(sockfd, reinterpret_cast<const char*>(buf), static_cast<int>(len), flags, dest_addr, addrlen);
Expand Down
10 changes: 9 additions & 1 deletion include/sockets-cpp/UdpSocket.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include <thread>
#if defined(FMT_SUPPORT)
#include <fmt/core.h>
#else
#include <iostream>
#endif

namespace sockets {
Expand Down Expand Up @@ -411,7 +413,13 @@ class UdpSocket {
} else if (FD_ISSET(m_fd, &fds)) {

std::array<char, MAX_PACKET_SIZE> msg;
ssize_t numOfBytesReceived = m_socketCore.Recv(m_fd, msg.data(), MAX_PACKET_SIZE, 0);
sockaddr_in clntAddr;
socklen_t addrLen = sizeof(clntAddr);
ssize_t numOfBytesReceived = m_socketCore.RecvFrom(m_fd, msg.data(), MAX_PACKET_SIZE, 0, (sockaddr*)&clntAddr, (socklen_t*)&addrLen);

std::string srcAddr = inet_ntoa(clntAddr.sin_addr);
uint16_t srcPort = ntohs(clntAddr.sin_port);
std::cout << "Data received from " << srcAddr << ":" << srcPort << "\n";
// Note: recv() returning 0 can happen for zero-length datagrams
if (numOfBytesReceived >= 0) {
publishUdpMsg(msg.data(), static_cast<size_t>(numOfBytesReceived));
Expand Down

0 comments on commit 87678f6

Please sign in to comment.