|
|
- #include <chrono>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <string.h>
- #include <endian.hpp>
- #include <network.hpp>
-
- using namespace std::chrono_literals;
-
- int main(){
- uint16_t db_port = 32555;
- auto soc = socket(AF_INET, SOCK_DGRAM, 0);
- struct sockaddr_in addr;
- addr.sin_family = AF_INET;
- addr.sin_port = htons(db_port);
- memset((void*)&addr.sin_addr, 0, sizeof(addr.sin_addr));
- bind(soc,(struct sockaddr*)&addr,sizeof(addr));
-
- req_rep buffer;
- sockaddr_in client;
- socklen_t packet_sz;
-
- while(true)
- {
- recvfrom(
- soc,
- (void*)&buffer,
- sizeof(req_rep),
- MSG_WAITFORONE,
- (struct sockaddr*)&client,
- &packet_sz
- );
- buffer.server_ts = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
-
- sendto(
- soc,
- (void*)&buffer,
- sizeof(req_rep),
- 0,
- (struct sockaddr*)&client,
- (socklen_t)sizeof(client)
- );
- }
- }
|