/** * Sets the address to return to the caller * * @param InAddr the address that is being cached */ FResolveInfoCached::FResolveInfoCached(const FInternetAddr& InAddr) { // @todo sockets: This should use Clone uint32 IpAddr; InAddr.GetIp(IpAddr); Addr = ISocketSubsystem::Get()->CreateInternetAddr(IpAddr, InAddr.GetPort()); }
FWebSocket::FWebSocket( const FInternetAddr& ServerAddress ) :IsServerSide(false) { #if !PLATFORM_HTML5 #if !UE_BUILD_SHIPPING lws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_DEBUG | LLL_INFO, lws_debugLogS); #endif Protocols = new lws_protocols[3]; FMemory::Memzero(Protocols, sizeof(lws_protocols) * 3); Protocols[0].name = "binary"; Protocols[0].callback = unreal_networking_client; Protocols[0].per_session_data_size = 0; Protocols[0].rx_buffer_size = 10 * 1024 * 1024; Protocols[1].name = nullptr; Protocols[1].callback = nullptr; Protocols[1].per_session_data_size = 0; struct lws_context_creation_info Info; memset(&Info, 0, sizeof Info); Info.port = CONTEXT_PORT_NO_LISTEN; Info.protocols = &Protocols[0]; Info.gid = -1; Info.uid = -1; Info.user = this; Context = lws_create_context(&Info); check(Context); StrInetAddress = ServerAddress.ToString(false); InetPort = ServerAddress.GetPort(); #endif }
FWebSocket::FWebSocket( const FInternetAddr& ServerAddress ) :IsServerSide(false) { #if !PLATFORM_HTML5_BROWSER #if !UE_BUILD_SHIPPING lws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_DEBUG | LLL_INFO, libwebsocket_debugLogS); #endif Protocols = new libwebsocket_protocols[3]; FMemory::Memzero(Protocols, sizeof(libwebsocket_protocols) * 3); Protocols[0].name = "binary"; Protocols[0].callback = FWebSocket::unreal_networking_client; Protocols[0].per_session_data_size = 0; Protocols[0].rx_buffer_size = 10 * 1024 * 1024; Protocols[1].name = nullptr; Protocols[1].callback = nullptr; Protocols[1].per_session_data_size = 0; struct lws_context_creation_info Info; memset(&Info, 0, sizeof Info); Info.port = CONTEXT_PORT_NO_LISTEN; Info.protocols = &Protocols[0]; Info.gid = -1; Info.uid = -1; Info.user = this; Context = libwebsocket_create_context(&Info); check(Context); Wsi = libwebsocket_client_connect_extended (Context, TCHAR_TO_ANSI(*ServerAddress.ToString(false)), ServerAddress.GetPort(), false, "/", TCHAR_TO_ANSI(*ServerAddress.ToString(false)), TCHAR_TO_ANSI(*ServerAddress.ToString(false)), Protocols[1].name, -1,this); check(Wsi); #endif #if PLATFORM_HTML5_BROWSER struct sockaddr_in addr; int res; SockFd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (SockFd == -1) { UE_LOG(LogHTML5Networking, Error, TEXT("Socket creationg failed ")); } else { UE_LOG(LogHTML5Networking, Warning, TEXT(" Socked %d created "), SockFd); } fcntl(SockFd, F_SETFL, O_NONBLOCK); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(ServerAddress.GetPort()); if (inet_pton(AF_INET, TCHAR_TO_ANSI(*ServerAddress.ToString(false)), &addr.sin_addr) != 1) { UE_LOG(LogHTML5Networking, Warning, TEXT("inet_pton failed ")); return; } int Ret = connect(SockFd, (struct sockaddr *)&addr, sizeof(addr)); UE_LOG(LogHTML5Networking, Warning, TEXT(" Connect socket returned %d"), Ret); #endif }
/** * Binds a socket to a network byte ordered address * * @param Addr the address to bind to * * @return true if successful, false otherwise */ bool FSocketSteam::Bind(const FInternetAddr& Addr) { SteamChannel = Addr.GetPort(); return true; }