[bf1942] New gamespy protocol -gs3 (supports BF2) & -a2s updated for HL1

covert covert at optushome.com.au
Mon Jun 13 21:16:01 EDT 2005


The problem is the unread bytes are for only the first packet. I cannot seem to find out how to read the extra packets. php.net and google have not been helpfull.

For reading the data I do


		do {
			$serverdata.=fgetc($bf2socket);
			$serverdatalen++;
			$socketstatus=socket_get_status($bf2socket);

			if ($this->getmicrotime()>($query_time_start+$timeout_millli)) {
				$this->errmsg="Connection timed out";
				fclose($bf2socket);
				return;
			}
		} while($socketstatus["unread_bytes"]); 


If I can get this working my class will be downloadable to the public on dev.kquery.com (when it is back)


> read the online help for the command socket_get_status(), it
> returns an array where one field is named "unread_bytes". You have
> to check if it is non-zero.
> I don't know whether it is changed because I used it for the same
> purpose some time ago but you have to read at least 1 byte of the
> socket buffer to have this "unread_bytes" filled with the right
> value when you invoke the socket_get_status() command. Hope that
> helps...
>
> covert wrote:
>
>
>> I am working on a php version to query bf2 server but I have hit
>> a brick wall with php only wanting to receive 1 UPD packet.
>> Dropping off rules and server info have helped to get me around
>> 45 players but the rest gets lost. Any trick you used to do this
>> in qstat I could also do in php ?






More information about the Bf1942 mailing list