ホームページ  >  記事  >  バックエンド開発  >  PHPでのソケットプログラミングの例

PHPでのソケットプログラミングの例

WBOY
WBOYオリジナル
2016-07-25 09:07:45798ブラウズ
  1. error_reporting(E_ALL);
  2. set_time_limit(0);
  3. echo "

    TCP/IP 接続

    n";
  4. $port = 1935;
  5. $ip = "127.0.0.1";
  6. /*
  7. +--------------------------------------------
  8. * @socket连接整个过程
  9. +------------------------------
  10. * @socket_create
  11. * @socket_connect
  12. * @socket_write
  13. * @socket_read
  14. * @socket_close
  15. +--------------------------------
  16. */
  17. $socket =ソケット_create(AF_INET, SOCK_STREAM) , SOL_TCP);
  18. if ($socket echo "socket_create() が失敗しました: 理由: " 。ソケット_strerror($socket) 。 "n";
  19. }else {
  20. echo "OK.n";
  21. }
  22. echo "试图连接 '$ip' 端口 '$port'...n";
  23. $result =socket_connect($socket, $ip , $port);
  24. if ($result echo "socket_connect() failed.nReason: ($result) " .ソケット_strerror($result) 。 "n";
  25. }else {
  26. echo "连接OKn";
  27. }
  28. $in = "ホーン";
  29. $in .= "初血rn";
  30. $out = '';
  31. if(!socket_write( $socket, $in, strlen($in))) {
  32. echo "socket_write() が失敗しました: 理由: " 。ソケット_strerror($socket) 。 "n";
  33. }else {
  34. echo "サーバー情報送信成功!n";
  35. echo "送信内容は:$in
    ";
  36. }
  37. while($out =ソケット_read($socket, 8192)) {
  38. echo "受信服务器回传情報成功!n";
  39. echo "受信内容は:",$out;
  40. }
  41. echo "关闭SOCKET...n";
  42. socket_close($socket);
  43. echo "关闭OKn";
  44. ?>
复制代

服务器端代:

  1. //确保在接客户端時間不会超過時間
  2. set_time_limit(0);
  3. $ip = '127.0.0.1';
  4. $port = 1935;
  5. /*
  6. +----------------------------
  7. * @socket通信整个过程
  8. +--------------------- ----------------------
  9. * @socket_create
  10. * @socket_bind
  11. * @socket_listen
  12. * @socket_accept
  13. * @socket_read
  14. * @socket_write
  15. * @socket_close
  16. +--------------------------------
  17. */
  18. /*--------- -------以下の操作都は手册上のものです--------*/
  19. if(($sock =ソケット_create(AF_INET,SOCK_STREAM,SOL_TCP) ) < 0) {
  20. echo "socket_create() 失われた原因:".socket_strerror($sock)."n";
  21. }
  22. if(($ret =ソケットバインド($sock,$ip,$port) ) < 0) {
  23. echo "socket_bind() 失われた原因:".socket_strerror($ret)."n";
  24. }
  25. if(($ret =ソケット_listen($sock,4)) < 0 ) {
  26. echo "socket_listen() 失われた原因:".socket_strerror($ret)."n";
  27. }
  28. $count = 0;
  29. do {
  30. if (($msgsock =ソケット_accept($sock) ) <0) {
  31. echo "socket_accept() が失敗しました: 理由: " 。ソケット_strerror($msgsock) 。 "n";
  32. echo "等待ち连接...";
  33. Break;
  34. } else {
  35. //公開到客户端
  36. $msg ="测试成功!n";
  37. ソケット_write($msgsock, $msg, strlen ($msg));
  38. echo "测试成功了啊in";
  39. $buf =ソケット_read($msgsock,8192);
  40. $talkback = "收到的信息:$bufn";
  41. echo $talkback;
  42. if(++$count >= 5){
  43. ブレーク;
  44. };
  45. }
  46. //echo $buf;
  47. socket_close($msgsock);
  48. } while (true);
  49. socket_close($sock);
  50. ?>
复制發


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。