ソケットを作成してローカルホストにバインドし、127.0.0.1
Microsoft の telnet サービスを使用して接続しようとしましたが、指定したアドレスとポートに接続するたびに次のエラーが発生します。
PHP 警告: socket_write(): ソケット [0] に書き込めません: ソケットが接続されておらず、(sendto 呼び出しを使用してデータグラム ソケットで終了する場合) アドレスが指定されていないため、データの送信または受信の要求は許可されませんでした.
同様のエラーが socket_read によって返されます。telnet が正常に機能し、localhost に socket_connect 要求を送信する必要があることを理解できません。
コードは次のとおりです。
set_time_limit(0);
$socket=null;
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if(socket_bind($socket,"127.0.0.1",58)){
if(!socket_listen($socket,0)){
echo "Problem Listening to the socket";
}do{
$res=socket_accept($socket);
$write="\n Hello the connection has been established";
if(!socket_write($socket,$write,strlen($write))){
echo "Problem Reading the and writing to the socket";
}
do{
if(!$clientmsg=socket_read($socket,2048,PHP_NORMAL_READ)){
echo "Error reading Client Msg";
break;
}
$repsonse= "Thanks for you input";
socket_write($socket,$response,strlen($response));
if($nclientmsg=trim($clientmsg)){
continue;
}
if($clientmsg="close"){
socket_close($socket);
echo "The socket has been closed as promised Thanks";
break 3;
}
}while(true);
}while(true);
}else{
echo "Problem connecting to the socket.Unable to bind to the specified address";
}
ありがとう。