画像を base64 エンコーディングにエンコードし、作成中の C++ サーバーに送信しようとしています。そのためにPHPを使用しています。
したがって、PHP コードはクライアントであり、C++ コードはリッスン サーバーです。
この問題は大きな画像で発生します。たとえば、70KB の画像。小さな画像でも適切に機能しています。5KBなど。
発生したエラーは次のとおりです: 警告: socket_write() [function.socket-write]
: ソケット [0] に書き込めません: データグラム ソケットで送信されたメッセージが、内部メッセージ バッファーまたはその他のネットワーク制限よりも大きかったか、データグラムを受信するために使用されたバッファーが、ソケット [0] よりも小さかったです。データグラムそのもの。
この問題は、画像をいくつかの小さなパケットに分割せずに修正できますか?
送信パケットが 1MB である必要があるだけです。
これは私が使用しているコードです:
$con=file_get_contents("image url");
$binary_data=base64_encode($con);
$host = "192.168.35.54";
$port = 1060;
$message = $binary_data;
// No Timeout
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) or die("Could not create socket\n");
socket_connect($socket, $host, $port) or die("Could not connect to server\n");
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");