sockets.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * require ./configure --enable-sockets
  4. */
  5. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Unable to create socket\n");
  6. socket_set_nonblock($socket) or die("Unable to set nonblock on socket\n");
  7. function socket_onRead($socket)
  8. {
  9. static $i = 0;
  10. echo socket_read($socket, 8192)."\n";
  11. $i ++;
  12. if ($i > 10)
  13. {
  14. echo "finish\n";
  15. swoole_event_del($socket);
  16. socket_close($socket);
  17. }
  18. else
  19. {
  20. sleep(1);
  21. swoole_event_set($socket, null, 'socket_onWrite', SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE);
  22. }
  23. }
  24. function socket_onWrite($socket)
  25. {
  26. socket_write($socket, "hi swoole");
  27. swoole_event_set($socket, null, null, SWOOLE_EVENT_READ);
  28. }
  29. function socket_onConnect($socket)
  30. {
  31. $err = socket_get_option($socket, SOL_SOCKET, SO_ERROR);
  32. if ($err == 0)
  33. {
  34. echo "connect server success\n";
  35. swoole_event_set($socket, null, 'socket_onWrite', SWOOLE_EVENT_READ);
  36. socket_write($socket, "first package\n");
  37. }
  38. else
  39. {
  40. echo "connect server failed\n";
  41. swoole_event_del($socket);
  42. socket_close($socket);
  43. }
  44. }
  45. swoole_event_add($socket, 'socket_onRead', 'socket_onConnect', SWOOLE_EVENT_WRITE);
  46. @socket_connect($socket, '127.0.0.1', 9501);