Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odbieranie danych z konkretnego portu.
Forum PHP.pl > Forum > Przedszkole
miniol
Mam takie nieco bardziej teoretyczne pytanie.

W jaki sposób mogę za pomocą PHP odebrać dane z jakiegoś portu (np: 8844).
Czy posiadając hosting współdzielony mogę takie dane otrzymywać w sposób bezpieczny (czy np inni nie będą mieli do nich dostępu), jeśli podam jako serwer swoją domenę podpiętą właśnie pod ten serwer.

Konkretnie chcę odebrać sygnał z samochodowego nadajnika GPS i nanieść te dane na mapę. Oczywiście GPS jest wyposażony w nadajnik GSM, który przekazuje dane na serwer.
Sephirus
Co do słuchania na porcie (o ile serwer pozwoli):

http://php.net/manual/en/function.socket-listen.php

Zaznaczam jednak że PHP nie jest do tego optymalnym wyborem...

Co do bezpieczeństwa to jeśli będziesz z tego portu dane odpowiednio analizował to nie powinno być większego problemu. Pamiętaj jednak, że normalnie powinien tu się znaleźć jakiś protokół uwierzytelniania takiego połączenia - może ten twój GPS coś takiego ma i musiałbyś jedynie go obsłużyć. smile.gif Jeśli nie to musisz bardzo uważać na dane przychodzące na ten port.
miniol
Port jest chyba inny. Niestety nie mam przy sobie dokumentacji i strzeliłem jakiś pierwszy lepszy jaki mi przyszedł go głowy.
W każdym razie tego właśnie potrzebowałem. Już znalazłem jakiś przykład nawet i jak tylko wrócę do domu to postaram się coś wyłapać.

Jeszcze takie pytanie.
Jak długo mogę odczytywać te dane z portu? Chodzi o to, że GPS nadaje sygnał co 5 minut. Czy sygnał jest gdzieś zapisywany w pamięci tymczasowej na te 5 minut i mogę w każdej chwili odczytać ten ostatni sygnał zanim nie zostanie nadpisany? Czy może sygnał "przelatuje" przez mój serwer i od razu znika- oznacza to wtedy, że jeśli nie wyłapię sygnału w momencie wysłania, to już przepadł.
Mam nadzieję, że wiadomo o co mi chodzi.
Pytania może banalne, ale nigdy nie miałem doczynienia z nasłuchiwaniem portu i niewiele o tym wiem.

Czy ktoś mi może powiedzieć, dlaczego nie otrzymuję żadnych danych takim kodem?

  1. <?php
  2. // Set the ip and port we will listen on
  3. $host = '79.96.128.124';
  4. $port = 8827;
  5.  
  6.  
  7. // create low level socket
  8. if(!$socket=socket_create(AF_INET,SOCK_STREAM,0)){
  9. trigger_error('Error creating new socket',E_USER_ERROR);
  10. }
  11.  
  12. # reuse socket tweak
  13. if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
  14. echo socket_strerror(socket_last_error($socket));
  15. }
  16.  
  17. // tie up socket to TCP port
  18. if(!socket_bind($socket,$host,$port)){
  19. trigger_error('Error binding socket to TCP host:'.$host.', port:'.$port.'',E_USER_ERROR);
  20. }
  21.  
  22. // begin listening connections
  23. if(!socket_listen($socket)){
  24. trigger_error('Error listening socket connections',E_USER_ERROR);
  25. }
  26.  
  27. // create communication socket
  28. if(!$comSocket=socket_accept($socket)){
  29. trigger_error('Error creating communication socket',E_USER_ERROR);
  30. }
  31.  
  32. // read socket input
  33. $socketInput=socket_read($comSocket,1024);
  34.  
  35. //write data to file
  36. print_r($socketInput);
  37. echo $socketInput;
  38.  
  39. // close sockets
  40. socket_close($comSocket);
  41.  
  42. socket_close($socket);
  43. ?>
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.