Toon posts:

[PHP] Buffer socket vol, hoe leeg maken?

Pagina: 1
Acties:
  • 36 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb de volgende (vereenvoudigde code):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$buffer = "";
$address = "x.x.x.x";
$port = 1445;

// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// Bind the socket to an address/port
socket_bind($sock, $address, $port);

// Start listening for connections
socket_listen($sock);

// Loop continuously
while (true) {

/*-------------------------------------------------------------
  client setup and code to setup new connections (skip)
-------------------------------------------------------------*/

/*-------------------------------------------------------------
daarna komt code waarmee ik luister naar verbonden clients,
dit gaat prima. Ik lees data afkomstig van clients met socket_recv().
Met de data wordt nog niets gedaan, de buffer wordt alleen door de server
naar stdout gestuurd, zodat ik kan zien wat er binnenkomt van clients.
-------------------------------------------------------------*/

$input = socket_recv($clients[$i]["sock"], &$buffer, 8, PHP_BINARY_READ);


/*-------------------------------------------------------------
display input van clients
-------------------------------------------------------------*/

}

// Destroy master socket
socket_close($sock);


Ik gebruik socket_recv() omdat socket_read() niet werkt op W32/CLI.
Het ontvangen en versturen van data gaat prima, maar op een gegeven moment is de buffer (8 bytes) vol.

Hoe leeg ik die buffer? In mn testomgeving staat die op 2048 bytes, maar dat gaat ook niet genoeg zijn. Ik wil dat ding dus legen. Maar hoe?
Heb me suf gezocht. Dingen als $buffer = "" en unset($buffer) werken niet en een commando als socket_clear_buffer() bestaat niet :P

Iemand die hier ervaring mee heeft?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Kun je je buffer niet gewoon legen in PHP met iets van:

$buffer = "";

Verwijderd

Topicstarter
questa schreef op 02 april 2004 @ 11:35:
Kun je je buffer niet gewoon legen in PHP met iets van:

$buffer = "";
Lees de een-na-laatste regel van mn post nog s ;)

Kleine toevoeging:
socket_read() werkt zowel met PHP4.3.5 en PHP5.0.0 RC1 niet op Win32.

[ Voor 20% gewijzigd door Verwijderd op 02-04-2004 11:44 ]


Verwijderd

Uit de reactie in de online-hadnleiding van php:

in case you want to empty/unset $buffer, but failing to do so, try using 0 as flag.
PHP_NORMAL_READ and PHP_BINARY_READ respectively hold 1 and 2 as value.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02-05 01:32
Waarom gebruik je ueberhaupt een ongedocumenteerde en dus ongespecificeerde functie als je ook socket_read kunt gebruiken?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 20 april 2005 @ 14:23:
Uit de reactie in de online-hadnleiding van php:

in case you want to empty/unset $buffer, but failing to do so, try using 0 as flag.
PHP_NORMAL_READ and PHP_BINARY_READ respectively hold 1 and 2 as value.
Waarom probeer je een probleem om te lossen dat ruim een jaar geleden aan de orde was? Grote kans dat de topicstarter zijn probleem inmiddels wel opgelost heeft. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.