Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CodeIgniter]json rpc codeigniter, Potrzebuje pomocy
dzajkob
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.05.2014

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


Muszę napisać aplikację klient-serwer w php. Klient musi wywołać zdalnie wybrane metody na serwerze. Chciałbym to tego wykorzystać Jsonrpc lub ewentualnie xmlrpc. Aplikacje chciałem stworzyć w codeigniter gdyż serwer oraz klient będzie stopniowo się rozrastać.

Znalazłem fajny opis rozwiązania przy użycia jsonrpc:
http://ellislab.com/forums/viewthread/98953/

Próbowałem go zaimplementować ale przy postawieniu serwera wywala mi błąd:
{"version":"1.1","error":{"code":0,"name":"Parse error","message":"An error occurred on the server while parsing the JSON text comprising the procedure call."}}

Nie wiem gdzie popełniam błąd. Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dzajkob
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.05.2014

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


Już powili kumam. Skorzystałem z tutoriala.
http://www.codeproject.com/Tips/418814/Soc...gramming-in-PHP

Musze teraz tylko przerobić kod tak aby wykonywał odpowiednie metody oraz obsługiwał błędy. Jak skończę to zamieszczę kod aby ktoś podsuną ewentualnie inne pomysły.

Doszłem do tego momentu:

Kod serwera:
  1. <?php
  2.  
  3. $host = '127.0.0.1';
  4. $port = 25003;
  5.  
  6.  
  7.  
  8. if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
  9. showError();
  10. } else {
  11. echo 'Informache na temat socket zostaly ustawione<br>';
  12. }
  13.  
  14.  
  15. if( ! socket_bind($socket, $host, $port) ){
  16. showError($socket);
  17. } else {
  18. echo 'Ustawiono socket na odpowiedni port<br>';
  19. }
  20.  
  21.  
  22. if( ! socket_listen($socket, 3) ){
  23. showError();
  24. } else {
  25. echo 'Teraz nasluchuje polaczenia<br>';
  26. }
  27.  
  28. do {
  29. $client = socket_accept($socket);
  30. echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
  31.  
  32. $message = 'Polaczono z serwerem<br>';
  33. socket_write($client, $message, strlen($message));
  34.  
  35. do {
  36. if ( ! $clientMssg = socket_read($client, 1024) ){
  37. showError();
  38. }
  39.  
  40. $messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
  41. socket_write($client, $messageForUser, strlen($messageForUser) );
  42.  
  43. if( ! $clientMssg = trim($clientMssg) ){
  44. continue;
  45. }
  46.  
  47. if( $clientMssg == 'close' ){
  48. socket_close($client);
  49. echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>';
  50. break 2;
  51. }
  52. }while(true);
  53. }while(true);
  54.  
  55. echo 'Socket the endig<br>';
  56. socket_close($socket);
  57.  
  58. function showError( $theSocket = null){
  59. $errorcode = socket_last_error($theSocket);
  60. $errormsg = socket_strerror($errorcode);
  61.  
  62. die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg");
  63. }
  64.  
  65.  



Kod klienta:

  1. <?php
  2. $host = "127.0.0.1";
  3. $port = 25003;
  4. $message = "Hello Server";
  5. echo "Message To server :".$message;
  6. // create socket
  7. $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
  8. // connect to server
  9. $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
  10. // send string to server
  11. socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
  12. // get server response
  13. $result = socket_read ($socket, 1024) or die("Could not read server response\n");
  14. echo "Reply From Server :".$result;
  15. // close socket
  16. socket_close($socket);


Wynik działania:
1. Po stronie serwera:
Informache na temat socket zostaly ustawione
Ustawiono socket na odpowiedni port
Teraz nasluchuje polaczenia
Nowe polaczenie z klientem zostalo ustanowione

Warning: socket_read(): in C:\xampp\htdocs\cs\cs\server.php on line 37

Warning: socket_last_error() expects parameter 1 to be resource, null given in C:\xampp\htdocs\cs\cs\server.php on line 60
Nie mozna utworzyc polaczenia: [] Operacja ukończona pomyślnie.


2. Po stronie klienta:

Message To server :Hello ServerReply From Server :Polaczono z serwerem


Ktoś może mi pomóc? Będę wdzięczny.

Poprawiłem trochę kod, a mianowicie doałem trim do socket_read:

  1.  
  2. <?php
  3.  
  4. $host = '127.0.0.1';
  5. $port = 25003;
  6.  
  7.  
  8.  
  9. if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
  10. showError();
  11. } else {
  12. echo 'Informache na temat socket zostaly ustawione<br>';
  13. }
  14.  
  15.  
  16. if( ! socket_bind($socket, $host, $port) ){
  17. showError($socket);
  18. } else {
  19. echo 'Ustawiono socket na odpowiedni port<br>';
  20. }
  21.  
  22.  
  23. if( ! socket_listen($socket, 3) ){
  24. showError();
  25. } else {
  26. echo 'Teraz nasluchuje polaczenia<br>';
  27. }
  28.  
  29. do {
  30. $client = socket_accept($socket);
  31. echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
  32.  
  33. $message = 'Polaczono z serwerem<br>';
  34. socket_write($client, $message, strlen($message));
  35.  
  36. do {
  37. if ( ! $clientMssg = trim(socket_read($client, 1024) )){
  38. showError();
  39. }
  40.  
  41. $messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
  42. socket_write($client, $messageForUser, strlen($messageForUser) );
  43.  
  44. if( ! $clientMssg = trim($clientMssg) ){
  45. continue;
  46. }
  47.  
  48. if( $clientMssg == 'close' ){
  49. socket_close($client);
  50. echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>';
  51. break 2;
  52. }
  53. }while(true);
  54. }while(true);
  55.  
  56. echo 'Socket the endig<br>';
  57. socket_close($socket);
  58.  
  59. function showError( $theSocket = null){
  60. $errorcode = socket_last_error($theSocket);
  61. $errormsg = socket_strerror($errorcode);
  62. die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg");
  63.  
  64. }
  65.  
  66.  
  67.  


Ale i tak mam problem z funkcją showerror a dokładnie z socket_last_error

Warning: socket_last_error() expects parameter 1 to be resource, null given in C:\xampp\htdocs\cs\cs\server.php on line 60
Nie mozna utworzyc polaczenia: [] Operacja ukończona pomyślnie.




No przecież zwraca błąd z null bo jest null (IMG:style_emoticons/default/smile.gif)
Mam teraz następujący kod:

  1. <?php
  2.  
  3. $host = '127.0.0.1';
  4. $port = 25003;
  5.  
  6.  
  7.  
  8. if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
  9. showError($socket);
  10. } else {
  11. echo 'Informache na temat socket zostaly ustawione<br>';
  12. }
  13.  
  14.  
  15. if( ! socket_bind($socket, $host, $port) ){
  16. showError($socket);
  17. } else {
  18. echo 'Ustawiono socket na odpowiedni port<br>';
  19. }
  20.  
  21.  
  22. if( ! socket_listen($socket, 3) ){
  23. showError($socket);
  24. } else {
  25. echo 'Teraz nasluchuje polaczenia<br>';
  26. }
  27.  
  28. do {
  29. $client = socket_accept($socket);
  30. echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
  31.  
  32. $message = 'Polaczono z serwerem<br>';
  33. socket_write($client, $message, strlen($message));
  34.  
  35. do {
  36. if ( ! $clientMssg = trim(socket_read($client, 1024, PHP_NORMAL_READ ) )){
  37. showError($socket);
  38. }
  39.  
  40. $messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
  41. socket_write($client, $messageForUser, strlen($messageForUser) );
  42.  
  43. if( ! $clientMssg = trim($clientMssg) ){
  44. continue;
  45. }
  46.  
  47. if( $clientMssg == 'close' ){
  48. socket_close($client);
  49. echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>';
  50. break 2;
  51. }
  52. }while(true);
  53. }while(true);
  54.  
  55. echo 'Socket the endig<br>';
  56. socket_close($socket);
  57.  
  58. function showError( $theSocket = null){
  59. $errorcode = socket_last_error($theSocket);
  60. $errormsg = socket_strerror($errorcode);
  61. die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg");
  62.  
  63. }
  64.  


ostrzeżenie:

Warning: socket_read(): in C:\xampp\htdocs\cs\cs\server.php on line 37

Ten post edytował dzajkob 17.05.2014, 13:39:16
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 09:22