[PHP] fsockopen i fwrite


(Pifarek) #1

Piszę sobie małą klasę do obsługi protokołu gadu-gadu 8 w PHP i mam taki problem/pytanie: jak zakończyć pakiet? Mianowicie próbuje wysłać dwa pakiety po sobie, a one wysyłają się w jednym pakiecie, sklejone ze sobą.

metoda do wysyłania

private function sendData($data, $type)

	{

		if (is_array($data))

		{

			foreach ($data as $v)

			{

				$put .= $v;

			}

		}


		$header = pack("II", $type, strlen($put));


		$put = $header . $put;


		fwrite ($this->server_handler, $put, strlen($put));

		return True;

	}

([alex]) #2

Na ile ja widzę wysyłasz tu jeden pakiet ostatni z tablicy $data, jeżeli zaś $data nie jest tablicą to wysyłasz pusty nagłówek.


(Pifarek) #3

I tak ma być. Oryginalny klient wysyła to samo co ja - tylko, że w dwóch pakietach.


([alex]) #4

To wyjaśnij dokładnie na czym polega twój problem. Na ile widzę dajesz jeden pakiet i ten pakiet poleci. Może dwa razy wywołujesz funkcję sendData(), to podaj sposób wywołania. Pomyśl nad wykorzystaniem fflush($file); pomiędzy wywołaniami.


(Pifarek) #5

Wywołuję to nawet i trzy razy. I właśnie nie wiem, jak zrobić żeby fwrite nie dopisywał danych do jednego pakietu, tylko zrobił nowy, za każdym razem, kiedy funkcja jest wywoływana.

narazie "pomogło" umieszczenie

sleep(1);

po funkcji fwrite, ale to trochę bzdurna opcja :confused:

fflush nic nie zmienia...