将PHP代码块(fsockopen, fputs, fof, fgets)转换为c#
本文关键字:fgets 转换 fof fputs 代码 fsockopen PHP | 更新日期: 2023-09-27 18:07:59
我需要有人把这个php代码块转换成等效的c#。我们正在MT4上工作,通过asp.net web应用程序注册用户。我们已经给了php版本的网站张贴用户信息。每件事都相应地设置好了。但是,需要转换以下代码块。我尝试在线搜索解决方案,但无法找到任何文档,谢谢。
function MQ_Query($query)
{
$ret='error';
//---- open socket
$ptr=@fsockopen(T_MT4_HOST,T_MT4_PORT,$errno,$errstr,5);
//---- check connection
if($ptr)
{
//---- send request
if(fputs($ptr,"W$query'nQUIT'n")!=FALSE)
{
//---- clear default answer
$ret='';
//---- receive answer
while(!feof($ptr))
{
$line=fgets($ptr,128);
if($line=="end'r'n") break;
$ret.= $line;
}
}
fclose($ptr);
}
//---- return answer
return $ret;
}
请
在这里。我唯一不确定的是如何识别EOF。你应该试试这个代码片段——如果套接字关闭,或者没有任何东西可读,它应该会抛出异常。否则,它将在读取2000个128字节后返回。你可以按照你喜欢的方式来安排
private static string T_MT4_HOST = "188.120.127.95";
private static int T_MT4_PORT = 80;
public static string MQ_Query(string query)
{
var i = 0;
IPAddress[] IPs = Dns.GetHostAddresses(T_MT4_HOST);
var s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(IPs, T_MT4_PORT);
s.Send(Encoding.ASCII.GetBytes(String.Format("W{0}'nQUIT'n", query));
var received = new byte[128];
string ret = "";
while (i<100)
{
s.Receive(received);
var r = Encoding.ASCII.GetString(received);
if (r.StartsWith("end'r'n"))
break;
ret += r;
i++;
}
s.Close();
return ret;
}