*

PHP:ソケット通信サーバ・テスト用シミュレータの作成

公開日: 備忘録 ,

久々にPHPでソケット通信アプリを開発してます。WEBシステムで管理ページを開発し、設定内容をDBではなくSocket通信でアプリケーションに渡すというものです。

通知先のアプリケーションは開発環境にインストールしても動作しないので、開発にあたり簡単な(エラー処理とかが最低限の)シミュレータを開発したのでPHPで作る、Socket通信サーバの機能を簡単ご紹介します。

まずはソース一式

set_time_limit(0);
$port = "9999";

$socket = socket_create_listen($port);

if ($socket === false) die("Error!");

while (true) {
	$client = socket_accept($socket);
	if ($client === false) die("Error!");
	$request = socket_read($client, 4096, PHP_BINARY_READ);

	$return = "接続されたよ!!";

	socket_write($client, $return);
}
socket_close($client);

解説

set_time_limit(0);

タイムアウトさせないための設定です。

$port = "9999";

待ち受けするポートを指定します。

$socket = socket_create_listen($port);

接続を受け付けるためにポートをオープンする

if ($socket === false) die("Error!");

ソケットがオープンできなかった場合エラー

while (true) {
}

whileを抜け出す処理までループ(基本的にwhile内でwhileを抜け出す処理を実行しなければ無限ループになります)

$client = socket_accept($socket);

ソケットへの接続を許可する

if ($client === false) die("Error!");

接続を許可できなかった場合エラー

$request = socket_read($client, 4096, PHP_BINARY_READ);

接続されたsocketからデータを読み出す
$client:socket_acceptで許可したリソース
(4096):読み出すバイト数
(PHP_BINARY_READ):読み出しTYPE

$return = "接続されたよ!!";

応答内容を指定

socket_write($client, $return);

接続されたsocketにデータを返す

socket_close($client);

ソケットを閉じる

本番運用する場合には、エラー処理などの追加が必要ですが、テストで使用するだけであればこれで問題ないかと思います。
作ったファイルをサーバのコマンドラインからで実行すれば待受が開始されます。

読みだした$requestの内容を判断して$returnのデータを書き換えれば様々な電文の処理をシミュレートすることが可能になります。

ad

関連記事

jQuery tooltipの備忘録

Concrete5の外部フォームの記事は業務多忙の為、遅れています。期待している方がもしもいらっしゃ

記事を読む

no image

備忘録:jQueryのlive-clickがiPadで効かない

ちょっと忙しく、ブロクが更新できていませんが jQueryを利用してiPadでのウェブアプリケ

記事を読む

備忘録:jQueryで追加されたDOM要素にイベントを割り当てる

jQueryを多用して、WEBベースの管理システムを開発中です。 append等で、初期表示さ

記事を読む

備忘録:Facebookページで「いいね」がクリックされているかどうかを判定

あけましておめでとうございます。 本年もよろしくお願いいたします。 昨年は様々なことが有

記事を読む

MAC osx10.9 MavericksとiPhoneで地図情報を共有

osx10.9で「map」がmacにも追加されましたが、皆さんお使いですか? iPhoneをお

記事を読む

備忘録:prettyPopinで開くポップアップが元のページより縦長の場合

久々の更新です、ご無沙汰しています。 とある案件で、ポップアップウィンドウを多用する物があった

記事を読む

WordPressのダッシュボードでJetpackのアクセス解析グラフが表示されない

サッカーワールドカップの組み合わせ抽選会速報なんて書いちゃいました。注目キーワードにあやかって

記事を読む

備忘録:jQuery-Datepickerの使い方

備忘録 いろいろな管理画面を開発している重宝する「Datepicker」ですが 過去のプロジ

記事を読む

MAC OSX10.9 Mavericksをクリーンインストール・USBメモリ編

先日、Mac OSX10.9 MavericksをMBAにクリーンインストールを書きましたが、iMa

記事を読む

Stinger3カスタマイズ 一覧系ページのショートコードに関する不具合

ブログの構築を行っている途中に気がついた不具合を修正しました エントリ一覧系のページで本文の

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スパム対策 * Time limit is exhausted. Please reload the CAPTCHA.

ad

忙しときに限って、PCがこわれる・・・

久々の投稿 忙しいときに限って、PCが壊れるのは昔から・・・・

年末年始休業のお知らせ

平素は、弊社製品をご愛顧いただき、ありがとうございます。 誠に勝

年末年始休業のお知らせ

平素は、弊社製品をご愛顧いただき、ありがとうございます。 誠に勝

夏季休業のお知らせ

夏季休業のお知らせ 平素は、弊社製品をご愛顧いただき、ありがとう

臨時休業のお知らせ(3月30日〜4月1日)

平素は、弊社製品をご愛顧いただき、ありがとうございます。 誠に勝手な

→もっと見る

PAGE TOP ↑