Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. function QueryMinecraft( $IP, $Port, $Timeout = 2 ) {
  2. $Socket = Socket_Create( AF_INET, SOCK_STREAM, SOL_TCP );
  3. Socket_Set_Option( $Socket, SOL_SOCKET, SO_SNDTIMEO, array( 'sec' => (int)$Timeout, 'usec' => 0 ) );
  4. Socket_Set_Option( $Socket, SOL_SOCKET, SO_RCVTIMEO, array( 'sec' => (int)$Timeout, 'usec' => 0 ) );
  5. if( $Socket === FALSE || @Socket_Connect( $Socket, $IP, (int)$Port ) === FALSE ) {
  6. return FALSE;
  7. }
  8. Socket_Send( $Socket, "\xFE\x01", 2, 0 );
  9. $Len = Socket_Recv( $Socket, $Data, 512, 0 );
  10. Socket_Close( $Socket );
  11. if( $Len < 4 || $Data[ 0 ] !== "\xFF" ) { return FALSE; }
  12. $Data = SubStr( $Data, 3 );
  13. $Data = iconv( 'UTF-16BE', 'UTF-8', $Data );
  14. if( $Data[ 1 ] === "\xA7" && $Data[ 2 ] === "\x31" ) {
  15. $Data = Explode( "\x00", $Data );
  16. return Array(
  17. 'HostName' => $Data[ 3 ],
  18. 'Players' => IntVal( $Data[ 4 ] ),
  19. 'MaxPlayers' => IntVal( $Data[ 5 ] ),
  20. 'Protocol' => IntVal( $Data[ 1 ] ),
  21. 'Version' => $Data[ 2 ]
  22. );
  23. }
  24. $Data = Explode( "\xA7", $Data );
  25. return Array(
  26. 'HostName' => SubStr( $Data[ 0 ], 0, -1 ),
  27. 'Players' => isset( $Data[ 1 ] ) ? IntVal( $Data[ 1 ] ) : 0,
  28. 'MaxPlayers' => isset( $Data[ 2 ] ) ? IntVal( $Data[ 2 ] ) : 0,
  29. 'Protocol' => 0,
  30. 'Version' => '1.0'
  31. );
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement