Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odbieranie danych
wojno
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
grzegorz_m
post
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... 
Go to the top of the page
+Quote Post
wojno
post
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.
Go to the top of the page
+Quote Post
grzegorz_m
post
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?
Go to the top of the page
+Quote Post
wojno
post
Post #5





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


Tak z tym nie bedzie problemow
Go to the top of the page
+Quote Post
grzemach
post
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 4
Dołączył: 9.06.2007
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Cytat(wojno @ 16.12.2008, 00:06:28 ) *
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
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jakie fsockopen" title="Zobacz w manualu PHP" target="_manual? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) stream_socket_server" title="Zobacz w manualu PHP" target="_manual jak już.
Go to the top of the page
+Quote Post
wojno
post
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.
Go to the top of the page
+Quote Post
erix
post
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.
Go to the top of the page
+Quote Post
wojno
post
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.
Go to the top of the page
+Quote Post
erix
post
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
Go to the top of the page
+Quote Post
wojno
post
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.
Go to the top of the page
+Quote Post
erix
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:02