PHPスクリプトがac#プログラムへのソケットを開き、c#プログラムがデータを読み取ってから応答を返すac#およびphpプロジェクトに取り組んでいます。
PHPスクリプトには、次のものがあります。
echo "Opening Client";
$fp = fsockopen("127.0.0.1", 12345, $errno, $errstr, 30);
if (!$fp)
{
echo "Error: $errstr ($errno)<br />";
}
else
{
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: 127.0.0.1\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
C# プロジェクトには、次のものがあります。
public void startListen()
{
int port = 12345;
IPAddress serverAddress = IPAddress.Parse("127.0.0.1");
TcpListener listener = new TcpListener(serverAddress, 12345);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream stream = client.GetStream();
byte[] data = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(data, 0, Convert.ToInt32(client.ReceiveBufferSize));
string request = Encoding.ASCII.GetString(data, 0, bytesRead);
Console.WriteLine(request);
Console.ReadLine();
PHPスクリプトは待機しているようで終了しません.C#アプリのソケットが応答を返すためだと思いますが、これを行う方法がわかりません. もう 1 つの問題は、C# で必要な場合ですConsole.ReadLine()
。それ以外の場合、C# プログラムは終了しますが、PHP スクリプトは期待どおりに終了します。
基本的に、私が知りたいのは、これがソケットで送信されたデータを読み取る最良の方法であり、プログラムを実行し続けてソケットでリッスンし続けるための最良の方法と、応答を返す方法です。 php スクリプトを終了できます。
ご協力いただきありがとうございます。