歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> mini2440上Apache php的socket通信

mini2440上Apache php的socket通信

日期:2017/3/1 10:30:34   编辑:Linux編程

server.php

[php]
  1. <?php
  2. //確保在連接客戶端時不會超時
  3. set_time_limit(0);
  4. //設置IP和端口號
  5. $address='127.0.0.1';
  6. $port=2009; //調試的時候,可以多換端口來測試程序!
  7. //創建一個SOCKET
  8. if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)
  9. {
  10. echo "socket_create() 失敗的原因是:".socket_strerror($sock)."<br>";
  11. }
  12. //綁定到socket端口
  13. if(($ret=socket_bind($sock,$address,$port))<0)
  14. {
  15. echo "socket_bind() 失敗的原因是:".socket_strerror($ret)."\n";
  16. }
  17. //開始監聽
  18. if(($ret=socket_listen($sock,4))<0)
  19. {
  20. echo "socket_listen() 失敗的原因是:".socket_strerror($ret)."\n";
  21. }
  22. do {
  23. if (($msgsock = socket_accept($sock)) < 0)
  24. {
  25. echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
  26. break;
  27. }
  28. //發到客戶端
  29. $msg ="<font color=red>歡迎進入服務器!</font><br>";
  30. socket_write($msgsock, $msg, strlen($msg));
  31. echo "讀取客戶端發來的信息<br>";
  32. $buf = socket_read($msgsock,8192);
  33. $talkback = "收到的信息:$buf<br>";
  34. echo $talkback;
  35. /* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
  36. {
  37. echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
  38. }
  39. else
  40. {
  41. echo "發送成功";
  42. }*/
  43. //echo $buf;
  44. socket_close($msgsock);
  45. } while (true);
  46. socket_close($sock);
  47. ?>
client.php

[php]
  1. <?php
  2. error_reporting(E_ALL);
  3. set_time_limit(0);
  4. echo "<h2>TCP/IP Connection</h2>\n";
  5. $service_port = 2009;
  6. $address = "127.0.0.1";
  7. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  8. if ($socket < 0)
  9. {
  10. echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
  11. }
  12. else
  13. {
  14. echo "OK....\n";
  15. }
  16. echo "試圖連接 $address 端口 $service_port ...<br>";
  17. $result = socket_connect($socket, $address, $service_port);
  18. if ($result < 0)
  19. {
  20. echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
  21. }
  22. else
  23. {
  24. echo "連接OK<br>";
  25. }
  26. $in = "Hello\r\n";
  27. $in .= "我是Chester\r\n";
  28. $out = '';
  29. $out1='';
  30. if(!socket_write($socket, $in, strlen($in)))
  31. {
  32. echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
  33. }
  34. else
  35. {
  36. echo "發送到服務器信息成功!<br>";
  37. echo "發送的內容為:<font color='red'>$in</font> <br>";
  38. }
  39. while($out = socket_read($socket, 8192))
  40. {
  41. echo "接收服務器回傳信息成功!<br>";
  42. echo "接受的內容為:",$out;
  43. }
  44. echo "關閉SOCKET...<br>";
  45. socket_close($socket);
  46. echo "關閉OK<br>";
  47. ?>
實驗結果如下:

Copyright © Linux教程網 All Rights Reserved