46 int PeerLength =
sizeof(
struct sockaddr_in);
47 int ClientLength =
sizeof(
struct sockaddr_in);
49 socklen_t PeerLength =
sizeof(
struct sockaddr_in);
50 socklen_t ClientLength =
sizeof(
struct sockaddr_in);
54 std::cerr <<
"Error: Invalid Socket Descriptor\n";
67 long int bSent = sendto(
m_SockFd, (
char *)&MsgSetup,
sizeof(MsgSetup), 0,
71 std::cerr <<
"Error Failed to Send Setup Message\n";
79 std::cerr <<
" Sent: " << bSent << std::endl;
88 std::cerr <<
"Error Failed to Receive Setup Message\n";
96 std::cerr <<
" Received: " << bRead << std::endl;
101 memcpy(&
m_ClientAddress, &MsgSetup.ClientAddress,
sizeof(
struct sockaddr_in));
103 std::cout <<
"Info: Bound to client\n";
104 std::cout <<
"Server Address: " << inet_ntoa(
m_ServerAddress.sin_addr) << std::endl;
106 std::cout <<
"Client Address: " << inet_ntoa(
m_ClientAddress.sin_addr) << std::endl;
115 int so_sendbuf = 1024*1024*16;
116 int so_recvbuf = 1024*1024*16;
125 ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
126 if (ret != NO_ERROR) {
127 std::cerr <<
"Failed to init windows socket API!\n";
134 m_SockFd = socket(AF_INET, SOCK_DGRAM, 0);
136 std::cerr <<
"Failed to create udp socket!\n";
141 ret = setsockopt(
m_SockFd, SOL_SOCKET, SO_SNDBUF, (
char *)&so_sendbuf,
sizeof(so_sendbuf));
143 std::cerr <<
"Failed to set socket option sendbuf size: " << so_sendbuf << std::endl;
149 ret = setsockopt(
m_SockFd, SOL_SOCKET, SO_RCVBUF, (
char*)&so_recvbuf,
sizeof(so_recvbuf));
151 std::cerr <<
"Failed to set socket option recvbuf size: " << so_recvbuf << std::endl;
157 ret = setsockopt(
m_SockFd, SOL_SOCKET, SO_REUSEADDR, (
char*)&so_reuse,
sizeof(so_reuse));
159 std::cerr <<
"Failed to set socket option reuseaddr\n";
173 if (setsockopt(
m_SockFd, SOL_SOCKET, SO_RCVTIMEO, (
char*)&tv,
sizeof(tv)) == -1){
174 std::cerr <<
"Couldn't set socket timeout\n" << std::endl;