![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam urządzenie ktore wysyła za pomocą protokołu tcp pewne dane. Czy da sie napisać skrypt ktory bedzie te dane odbierał i zapisywał w zmiennej. Czytałem ze trzeba utworzyć gniazdo tcp ale nie wim czy jest to możliwe w php. Proszę o pomoc,jakieś sugestie czym to ugryść. Pozdrawiam Ten post edytował wojno 15.12.2008, 23:36:43 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 1 Dołączył: 10.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca chyba wiadomo co chcesz zrobić.
Generalnie sprawa przesyłania danych przy zastosowaniu protokołu TCP/IP jest taka (dla architektury typu klient-serwer, a Ty chyba takiej oczekujesz): Na jednym hoście stawiasz program Serwer, który oczekuje na wiadomości od programów typu klient. W momencie, gdy uruchamiasz serwer otwierasz jednocześnie wybrany port -dzięki temu wiadomo, do której aplikacji mają zostać dostarczone dane. Kiedy Twój serwer oczekuje na wiadomości jakiś program klient wysyła wiadomości na adres, pod którym postawiłeś serwer i na port, na którym ten serwer oczekuje. Pytanie jest: gdzie tak naprawdę chcesz wysyłać te dane przez swoje "urządzenie" (cokolwiek to słowo znaczy). Na zdalny serwer www? A może Twoje "urządzenie" może wykorzystywać protokół http? Wówczas możesz wykorzystać standardową metodę GET i przekazać te dane w adresie URL. Oczywiście to zależy od ilości danych. Tak czy inaczej lepiej dodaj coś więcej... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Urządzenie wysyła dane na odpowiedni adres ip pod odpowiedzni port np 83.82.888.23 port 1000 i teraz chciałbym zeby na tym porcie czekał skrypt, cokolwiek przyjdzie bedzie zapysywane pliku, zmiennej lub bazy danych.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 1 Dołączył: 10.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
To co teraz napisałeś wynikało już z Twojej pierwszej wypowiedzi. Nie jest jednak jasne jaka to będzie architektura -np. gdzie chcesz to wysyłać. Powiem tak dla przykładu -czy możesz otworzyć jakiś port na hoście odbierającym (nie wiem darmowym/płatnym serwerze)? Czy administrator pozwoli na coś takiego?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak z tym nie bedzie problemow
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 4 Dołączył: 9.06.2007 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Urządzenie wysyła dane na odpowiedni adres ip pod odpowiedzni port np 83.82.888.23 port 1000 i teraz chciałbym zeby na tym porcie czekał skrypt, cokolwiek przyjdzie bedzie zapysywane pliku, zmiennej lub bazy danych. z tego co zrozumiałem skrypt miałby działać (i czekać) 24h/7dni. Jeśli to serwer dedykowany, to możesz coś takiego zrobić http://pl.php.net/fsockopen Jeśli jest to serwer innego rodzaju (ktoś inny nim zarządza), maksymalny czas wykonania skryptu php jest przeważnie ustawiony na 30sek |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Coś to nie działa w obu przypadkach.
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A my wróżymy z fusów? Bez kodu nic nie poradzi.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem taki kod
Kod <?php // Set the ip and port we will listen on $host = 82.98.222.99; $port = 5000; set_time_limit(0); // create low level socket if(!$socket=socket_create(AF_INET,SOCK_STREAM,0)){ trigger_error('Error creating new socket',E_USER_ERROR); } # reuse socket tweak if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) { echo socket_strerror(socket_last_error($socket)); exit; } // tie up socket to TCP port if(!socket_bind($socket,$host,$port)){ trigger_error('Error binding socket to TCP host:'.$host.', port:'.$port.'',E_USER_ERROR); } // begin listening connections if(!socket_listen($socket)){ trigger_error('Error listening socket connections',E_USER_ERROR); } // create communication socket if(!$comSocket=socket_accept($socket)){ trigger_error('Error creating communication socket',E_USER_ERROR); } // read socket input $socketInput=socket_read($comSocket,1024); //write data to file echo $socketInput; // close sockets socket_close($comSocket); socket_close($socket); ?> Działa ładnie tylko po wysłaniu na niego danych konczy swoje działąnie. Jak zrobić zeby działał i czekał cały czas. |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Leń do potęgi n-tej. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
http://pl.php.net/manual/en/ref.sockets.php#82163 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A to teraz doradziłem nie ma co.
|
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Przecież masz tu rozpisaną całą aplikację... :|
Główna filozofia opiera się na tym, aby funkcja odbierająca dane działała w pętli, która wykonuje się bez przerwy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:02 |