Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Socket_create - Problem :(
Forum PHP.pl > Forum > PHP
jarek
witam,

mam taki problem korzystam z ponizszego skryptu:

Kod
<?php
// Set time limit to indefinite execution
set_time_limit (0);
ignore_user_abort( true );
// Set the ip and port we will listen on
$address = 'localhost';
$port = 10559;



// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// Bind the socket to an address/port
socket_bind($sock, $address, $port) or die('Could not bind to address');
// Start listening for connections
socket_listen($sock);


while(true) {


$client = socket_accept($sock);

// Read the input from the client – 1024 bytes
$input = socket_read($client, 1024);


socket_write($client, $input.'::'.$output);
// Close the client (child) socket
socket_close($client);


}

socket_close($sock);
?>


ale niestety korzystac z niego moze tylko jedno polaczenie. mam apliakcje w delphi ktora laczy sie z tym socketem i chcialbym aby ona byla tylko polaczona i odbierala sobie potrzebne dane. a inny skrypt zeby przesylal te dane do socketa.

chodi o to:

skrypt przekazuje dane -> server socketowy - > aplikacja delphi

ma ktos jakis pomysl jak moge to rozwiazac ?
delorian
Można by było to zrobić gdybyś dodał możliwość rozdzielania procesu poprzez funkcję pcntl_fork" title="Zobacz w manualu PHP" target="_manual


Można by wykorzystać coś takiego, testowałem coś podobnego tylko pod C, więc nie wiem czy ruszy i musisz uważać, żeby Ci się procesów zombie nie porobiło smile.gif
  1. <?php
  2. // Set time limit to indefinite execution
  3. // Set the ip and port we will listen on
  4. $address = 'localhost';
  5. $port = 10559;
  6.  
  7.  
  8.  
  9. // Create a TCP Stream socket
  10. $sock = socket_create(AF_INET, SOCK_STREAM, 0);
  11. // Bind the socket to an address/port
  12. socket_bind($sock, $address, $port) or die('Could not bind to address');
  13. // Start listening for connections
  14. socket_listen($sock);
  15.  
  16.  
  17. while(true) {
  18.  
  19.  
  20. $client = socket_accept($sock);
  21.  
  22. $pid = pcntl_fork();
  23. if ($pid == -1) {
  24.  die(&#092;"could not fork\");
  25. } else if ($pid) {
  26.  socket_close($client);
  27. } else {
  28.  socket_close($sock);
  29.  // Read the input from the client – 1024 bytes
  30. $input = socket_read($client, 1024);
  31.  socket_write($client, $input.'::'.$output);
  32.  exit(0);
  33. }
  34.  
  35.  
  36. }
  37.  
  38. socket_close($sock);
  39. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.