我需要有人将这个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;
}
请
答案 0 :(得分:0)
在这里。我唯一不确定的是如何识别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;
}