我正在处理 ac# 和 php 项目,其中 PHP 脚本打开一个到 ac# 程序的套接字,c# 程序将读取数据,然后发回响应。
在 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# 应用程序上的套接字发送回响应,但我不知道该怎么做。另一个问题,在 C# 中我需要有,Console.ReadLine()
否则 c# 程序将退出,但 PHP 脚本会按预期完成。
基本上,我想知道的是这是读取在套接字上发送的数据的最佳方式,保持程序运行以便它继续侦听套接字的最佳方式是什么,以及我如何发回回复以便php脚本可以完成。
感谢您的任何帮助,您可以提供。