Guest User

Unreal Sockets

a guest
May 28th, 2022
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1. void amatchmaker::preparejoin(const fstring host)
  2. {
  3.     gengine->addonscreendebugmessage(-1, 5.f, fcolor::cyan, "preparejoin");
  4.  
  5.     ionlinesubsystem* onlinesub = online::getsubsystem(getworld());
  6.  
  7.     if (onlinesub)
  8.     {
  9.  
  10.         if (gengine->createnamednetdriver(getworld(), name_gamenetdriver, name_gamenetdriver))
  11.         {
  12.             gengine->addonscreendebugmessage(-1, 5.f, fcolor::green, "success creating netdriver");
  13.  
  14.             gengine->addonscreendebugmessage(-1, 5.f, fcolor::emerald, fstring("port from new netdriver: ").append(fstring::fromint(getportfromnetdriver(onlinesub->getinstancename()))));
  15.  
  16.             unetdriver* netdriver = getworld() ? gengine->findnamednetdriver(getworld(), name_gamenetdriver) : null;
  17.  
  18.             if (netdriver)
  19.             {
  20.                 uipnetdriver* ipnetdriver = cast<uipnetdriver>(netdriver);
  21.  
  22.                 if (ipnetdriver)
  23.                 {
  24.                     fstring error;
  25.  
  26.                     //ipnetdriver->initlisten(getworld(), localurl, false, error);
  27.  
  28.                     ipnetdriver->initconnect(getworld(), furl(), error);
  29.  
  30.                     gengine->addonscreendebugmessage(-1, 5.f, fcolor::red, error);
  31.  
  32.                     socket = ipnetdriver->socket;
  33.  
  34.                     if (socket)
  35.                     {
  36.                         //tsharedptr<finternetaddr> outaddr;
  37.  
  38.                         //socket->getaddress(outaddr);
  39.  
  40.                         gengine->addonscreendebugmessage(-1, 5.f, fcolor::cyan, fstring("port from new socket: ").append(fstring::fromint(socket->getportno())));
  41.  
  42.                         ftimespan threadwaittime = ftimespan::frommilliseconds(100);
  43.                         udpreceiver = new fudpsocketreceiver(socket, threadwaittime, text("udp receiver"));
  44.                         udpreceiver->ondatareceived().binduobject(this, &amatchmakeractor::recv);
  45.                         udpreceiver->start();
  46.  
  47.  
  48.                         fstring remoteurl = fstring("stun.l.google.com");
  49.  
  50.                         faddressinforesult addrinforesult = isocketsubsystem::get(platform_socketsubsystem)->getaddressinfo(*remoteurl, nullptr, eaddressinfoflags::default, esocketprotocolfamily::none, esockettype::socktype_unknown);
  51.  
  52.                         faddressinforesultdata* dnsresult = addrinforesult.results.getdata();
  53.  
  54.                         if (dnsresult == nullptr)
  55.                         {
  56.                             gengine->addonscreendebugmessage(-1, 5.f, fcolor::red, "no dns result");
  57.                             return;
  58.                         }
  59.  
  60.                         uint32 ip;
  61.  
  62.                         dnsresult->address->getip(ip);
  63.  
  64.                         gengine->addonscreendebugmessage(-1, 5.f, fcolor::cyan, fstring("dns: ").append(dnsresult->address->tostring(false)));
  65.  
  66.  
  67.                         int32 remoteport = 19302;
  68.                         tsharedptr<finternetaddr> remoteaddr = isocketsubsystem::get(platform_socketsubsystem)->createinternetaddr();
  69.                         remoteaddr->setip(ip);
  70.                         remoteaddr->setport(remoteport);
  71.  
  72.                         int32 bytessent = 0;
  73.  
  74.                         fstring data = "what do you want";
  75.  
  76.                         farraywriter writer;
  77.  
  78.                         writer << data;
  79.  
  80.                         uint8* bytebuffer = new uint8();
  81.  
  82.                         int32 bytescopied = hextobytes("000100002112a4423b2430270358b8e359f073e5", bytebuffer);
  83.  
  84.  
  85.                         socket->sendto(writer.getdata(), writer.num(), bytessent, *remoteaddr);
  86.  
  87.                         //socket->sendto(bytebuffer, bytescopied, bytessent, *remoteaddr);
  88.  
  89.  
  90.                         gengine->addonscreendebugmessage(-1, 5.f, fcolor::green, fstring::fromint(bytessent));
  91.                     }
  92.                     else
  93.                     {
  94.                         gengine->addonscreendebugmessage(-1, 5.f, fcolor::red, "failed creating socket");
  95.                     }
  96.                 }
  97.             }
  98.  
  99.         }
  100.         else
  101.         {
  102.             gengine->addonscreendebugmessage(-1, 5.f, fcolor::red, "failed creating netdriver");
  103.         }
  104.     }
Advertisement
Add Comment
Please, Sign In to add comment