将 PHP 代码块(fsockopen、fputs、feof、fgets)转换为 C#
Convert PHP Code Block (fsockopen, fputs, feof, fgets) into C#
我需要有人将此 php 代码块转换为等效的 C#。我们正在开发 MT4 以通过 asp.net 网络应用程序注册用户。我们已经得到 php 版本的站点到 post 的用户信息。每件事都相应地设置。但是需要转换以下代码块。我尝试搜索在线解决方案,但找不到任何文档,谢谢。
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 字节后 return。你可以按你喜欢的方式排列
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;
}
我需要有人将此 php 代码块转换为等效的 C#。我们正在开发 MT4 以通过 asp.net 网络应用程序注册用户。我们已经得到 php 版本的站点到 post 的用户信息。每件事都相应地设置。但是需要转换以下代码块。我尝试搜索在线解决方案,但找不到任何文档,谢谢。
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 字节后 return。你可以按你喜欢的方式排列
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;
}