Master Server Query Protocol/Parsing packet

To get each octet you must convert the hex pairs into int32. When the packet is received by your UDP client, the hex values will be converted into their integer values. For example hex "ff" will be converted into "255" in a byte array. We don't want that 255 because the addresses that we are receiving are made up of 6 pairs. 4 pairs are for the octets and the remaining two are combined together to create the port.
An example code for parsing the packet:
 Public Function browser_ConnectMaster(Byval ipStartSeed As String, Byval allFilters As String, Byval regionCode As String) As Byte()
 Dim ip As String = browser_ToString(UnicodeEncoding.ASCII.GetBytes(ipStartSeed))
 Dim filter As String = browser_ToString(UnicodeEncoding.ASCII.GetBytes(allFilters))
 hexString = "31" & regionCode & ip & "00" & filter & "00"
 byteArray = browser_GetBytes(hexString, discarded)
 Public WithEvents udpClientM1, udpClient As New Sockets.UdpClient
 Dim receivedBytes As Byte() = New Byte() {}
 Dim pret As Integer
 Public RemoteIpEndPoint As New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0)
 udpClientM1.Connect("72.165.61.136", 27010) ' Main Server
 RemoteIpEndPoint = udpClientM1.Client.RemoteEndPoint
 pret = udpClientM1.Send(byteArray, byteArray.Length)
 receivedBytes = udpClientM1.Receive(RemoteIpEndPoint)
 Dim retrievedServers() As String = browser_ToStringOriginal(receivedBytes).Split(" ")
 Return retrievedServers
 End Function
 Public Shared Function browser_ToStringOriginal(ByVal bytes As Byte()) As String
 Dim hexString As String = ""
 For i As Integer = 0 To bytes.Length - 1
 Dim newByteStr As String = Convert.ToString(bytes(i), 16)
 If newByteStr.Length < 2 Then ' Hex pair must always have two chars
 hexString += "0" & newByteStr & " "
 Else 
 hexString += newByteStr & " "
 End If
 Next
 Return hexString
 End Function
 Public Shared Function browser_ToString(ByVal bytes As Byte()) As String
 Dim hexString As String = ""
 For i As Integer = 0 To bytes.Length - 1
 hexString += bytes(i).ToString("X2")
 Next
 Return hexString
 End Function
 Public Shared Function browser_GetBytes(ByVal hexString As String, ByRef discarded As Integer) As Byte()
 discarded = 0
 Dim newString As String = ""
 Dim c As Char
 ' remove all none A-F, 0-9, characters
 For i As Integer = 0 To hexString.Length - 1
 c = hexString(i)
 If IsHexDigit(c) Then
 newString += c
 Else
 discarded += 1
 End If
 Next
 ' if odd number of characters, discard last character
 If newString.Length Mod 2 <> 0 Then
 discarded += 1
 newString = newString.Substring(0, newString.Length - 1)
 End If
 Dim byteLength As Integer = newString.Length / 2
 Dim bytes As Byte() = New Byte(byteLength - 1) {}
 Dim hex As String
 Dim j As Integer = 0
 For i As Integer = 0 To bytes.Length - 1
 hex = New [String](New [Char]() {newString(j), newString(j + 1)})
 bytes(i) = HexToByte(hex)
 j = j + 2
 Next
 Return bytes
 End Function
The above code will do the following: Connect to the master server, send a UDP query with specific variables (region code, start seed, filters), receive packet into byte array, convert byte array in hex array.
Now that we have converted the byte array into a hex array, we must convert each hex pair into its int32 equivalent.
 Dim serverList As New Hashtable()
 Private Sub browser_ParsePacket(Byval packet As String())
 Dim countPrimary, countSecondary As Integer
 Dim address, portBuilder, lastAddress As String
 Try
 For Each hexPair As String In packet
 If Not hexPair = Nothing Then
 countPrimary += 1
 If countPrimary > 6 Then
 If countSecondary <= 2 Then ' Get first 3 octets
 address = address & Convert.ToInt32(hexPair, 16) & "."
 ElseIf countSecondary = 3 Then ' Fourth octet must have a trailing :
 address = address & Convert.ToInt32(hexPair, 16)
 ElseIf countSecondary > 3 Then ' Get last two hex pairs to form the port
 portBuilder = portBuilder & hexPair
 End If
 If countSecondary = 5 Then ' Convert the combined hex pairs into an integer
 portBuilder = Convert.ToInt32(portBuilder, 16)
 End If
 countSecondary += 1
 End If
 If countSecondary = 6 Then
 lastAddress = address & ":" & portBuilder
 serverList.Add(serverList.Count + 1, address & ":" & portBuilder)
 countSecondary = 0
 portBuilder = 0
 address = String.Empty
 End If
 End If
 Next
 Catch ex As Exception
 MsgBox(ex.Message)
 End Try
 If Not lastAddress = "0.0.0.0:0" Then
 browser_ConnectMaster(lastAddress, "\napp\500", "00")
 Exit Sub
 Else
 For Each item As DictionaryEntry In serverList
 browser_HostConnect(item.Value)
 Next
 End If
 End Sub
This above code will go through each and every hex pair in the array. Ever 6 pairs (12 characters) is another IP address. It will add the found IP address to hashtable which can again be put through a loop to extract the addresses to connect and query later on.
(Code written by Erix920, your welcome devs :))