2012-03-15 6 views
3

PHPソケットを使用して、C#アプリケーションからPHP 5.3スクリプトへのtcp/ipソケット接続を作成しようとしています。 C#アプリはJSON文字列をPHPスクリプトに送信する必要があります。 the socket_read manualに関してで

私の質問:彼らは何を意味する:

"PHP_BINARY_READ (Default) - use the system recv() function. 
Safe for reading binary data." 

このパラメータを使用するときPHP_BINARY_READ、なぜ私はRECV()関数を正確に何を使うべきでしょうか?

ご協力いただきまして誠にありがとうございます。

+2

「socket_read()」に入るまでにPHPに*割れてしまったので... –

答えて

4

重要な部分は、ドキュメントが選択についてこう言われる、

  • PHP_NORMAL_READ - 読書は\nまたは\rで停止します。

あなたのソケットが行指向のテキストプロトコルである場合PHP_NORMAL_READを選択します。あなたのソケットが他のものなら、PHP_BINARY_READを選んでください。

+2

大丈夫ですが、なぜ私はrecv()を使うべきですか? ? – Mike

+2

ああ!それはちょうど彼らの英語の誤解です。これは、あなたがそのパラメータを与えるときに、それが基礎となる 'recv()'システムコールを使用してデータを受け取るべきであるというPHPへのコマンドです。 _あなたはそれについて何もする必要はありません。それはもう一度、他のパラメータのより高いレベルの行指向動作とは対照的です。 – sarnold

+1

ああ、それを持っています! :-)このような関数が実際にPHPに存在するので、私は混乱しました。http://www.php.net/manual/en/function.socket-recv.php – Mike

3

これは、PHP_BINARY_READを使用すると、this system callが下位ソケットからの読み取りに使用されることを意味します。読み取り\ nまたは\ rにおける停止 - バイナリデータの安全性についての発言は、reads

PHP_NORMAL_READ代替でこれを対比して説明します。

したがって、一度に1行ずつ読みたい場合は、PHP_NORMAL_READを使用してください。それ以外の場合は、PHP_BINARY_READを使用します(デフォルト)。

関連する問題