警告リターンを返すshoud。私はjson形式のサーバーから答えを得るためにソケットを作らなければなりません。これはコードです:PHPソケットは、JSONが、前にソケットを使用することはありません
$host = '11.11.11.1';//for example
$port = 1111;
$message = "xgm";
set_time_limit(2);
if(!($sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created \n";
if(!socket_connect($sock , $host , $port))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not connect: [$errorcode] $errormsg \n");
}
echo "Connection established \n";
if(! socket_send ($sock , $message , strlen($message) , 0))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
echo "Message send successfully \n";
if(socket_recv ($sock , $buf , 2045 , MSG_WAITALL) === FALSE)
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not receive data: [$errorcode] $errormsg \n");
}
var_dump($buf);
socket_close($sock);
そして、これは私が得る応答である:
- ソケットが
- 接続が
- メッセージ送信に成功
- 警告確立作成:socket_recv():にできないしソケットから読み出し[10045]:試行された操作は、オブジェクト
REFのタイプはサポートされていません勃起した。 Cで:ライン73- の\ wamp64 \ WWW \のJSONの\のindex.phpは、データを受信できませんでした:[10045]しようとした操作は、参照されるオブジェクトのタイプはサポートされていません。
したがって、socket_recvがfalseを返すようです。どうして?それはサーバーからの応答でjsonオブジェクトのためですか?それを修正する方法は?どんな方向?
これは、コードのすべてのですか? socket_recv関数の第2引数として渡される$ bufの値は? – mrjamesmyers
UDPパケットを受信するには、ソケットをローカルポートにバインドする必要があります。 'socket_bind($ sock、$ address、$ port) 'を使用してください。 – avy