Ik heb de volgende (vereenvoudigde code):
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
Iemand die hier ervaring mee heeft?
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
Iemand die hier ervaring mee heeft?