PHP의 소켓 프로그래밍 예

WBOY
풀어 주다: 2016-07-25 09:07:45
원래의
812명이 탐색했습니다.
  1. error_reporting(E_ALL);
  2. set_time_limit(0);
  3. echo "

    TCP/IP Connection

    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 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  18. if ($socket < 0) {
  19. echo "socket_create() failed: reason: " . socket_strerror($socket) . "n";
  20. }else {
  21. echo "OK.n";
  22. }
  23. echo "试图连接 '$ip' 端口 '$port'...n";
  24. $result = socket_connect($socket, $ip, $port);
  25. if ($result < 0) {
  26. echo "socket_connect() failed.nReason: ($result) " . socket_strerror($result) . "n";
  27. }else {
  28. echo "连接OKn";
  29. }
  30. $in = "Horn";
  31. $in .= "first bloodrn";
  32. $out = '';
  33. if(!socket_write($socket, $in, strlen($in))) {
  34. echo "socket_write() failed: reason: " . socket_strerror($socket) . "n";
  35. }else {
  36. echo "发送到服务器信息成功!n";
  37. echo "发送的内容为:$in
    ";
  38. }
  39. while($out = socket_read($socket, 8192)) {
  40. echo "接收服务器回传信息成功!n";
  41. echo "接受的内容为:",$out;
  42. }
  43. echo "关闭SOCKET...n";
  44. socket_close($socket);
  45. echo "关闭OKn";
  46. ?>
复制代码

服务器端代码:

  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 = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
  20. echo "socket_create() 失败的原因是:".socket_strerror($sock)."n";
  21. }
  22. if(($ret = socket_bind($sock,$ip,$port)) < 0) {
  23. echo "socket_bind() 失败的原因是:".socket_strerror($ret)."n";
  24. }
  25. if(($ret = socket_listen($sock,4)) < 0) {
  26. echo "socket_listen() 失败的原因是:".socket_strerror($ret)."n";
  27. }
  28. $count = 0;
  29. do {
  30. if (($msgsock = socket_accept($sock)) < 0) {
  31. echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "n";
  32. echo "等待连接...";
  33. break;
  34. } else {
  35. //发到客户端
  36. $msg ="测试成功!n";
  37. socket_write($msgsock, $msg, strlen($msg));
  38. echo "测试成功了啊n";
  39. $buf = socket_read($msgsock,8192);
  40. $talkback = "收到的信息:$bufn";
  41. echo $talkback;
  42. if( $count >= 5){
  43. break;
  44. };
  45. }
  46. //echo $buf;
  47. socket_close($msgsock);
  48. } while (true);
  49. socket_close($sock);
  50. ?>
复制代码


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿