stream_socket_serverを弄ってみた
今年もよろしくお願いします。
さて、PHPでstream_socket_serverという関数があるのを知ったので、
「PHPでWEBサーバ的な何か作れるじゃん?」と思い、少しだけ弄ってみました。
サンプルコード
recv.php
<?php function run() { $server = stream_socket_server("tcp://ipaddr:free_port", $errno, $errstr ); while(true){ $socket = stream_socket_accept( $server ); echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n"; fclose($socket); } fclose($server); } run(); ?>
実行確認
$ ps f
19663 pts/3 Ss 0:00 -bash 23049 pts/3 S+ 0:00 \_ /usr/bin/php recv.php
簡単に立ち上がりました。
telnetから
$ telnet ipaddr free_port
GET /index.html
を入力。
すると、recv.php側で
Data: 'GET /index.html '
をいけそうな感じです。
ブラウザからも http://ipaddr:free_port/ で接続。
recv.php側で
Data: 'GET / HTTP/1.1 Host:ipaddr:free_port User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ja,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive '
リクエストヘッダが取得出来ました。
とりあえず、弄ってみるのはここまでで。