2016-09-21 9 views
-2

に変換するこのPHPコードブロックを同等のC#に変換する人が必要です。我々はasp.net Webアプリケーション経由でユーザーを登録するMT4に取り組んでいます。私たちは、ユーザー情報を投稿するサイトのPHP版を与えられています。それに応じてすべてのものが設定されます。次のコードブロックを変換する必要があります。私はオンラインソリューションを検索しようとしましたが、ドキュメントのおかげで何も見つかりませんでした。PHPコードブロック(fsockopen、fputs、feof、fgets)をC#

function MQ_Query($query) 
{ 
$ret='error'; 
//---- open socket 
[email protected](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

たいと、このように手配することができます。 – Sejanus

+0

はい私はMT4にはあまりにも特異的で、 "fsockopen"のソケットについて言及した例をいくつか見つけました。とにかくこの質問を投稿する必要がある時間を節約するために。私は明示的にこれらを指摘しました(fsockopen-fputs-feof-fgets) – Khalil

答えて

0

ここにあります。私が確信しているのは、EOFを認識する方法だけです。このスニペットを試す必要があります。ソケットが閉じた場合や、読み込む必要がない場合は例外がスローされます。それ以外の場合は、2000バイトの読み取り後に128バイトだけ戻されます。あなたは私はあなたがソケットを使用してC#で条件他-ifとしばらくのサイクルを書く方法上の任意のドキュメントを見つけることができなかったとは考えていないあなたは

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; 
    } 
+0

はい、それはコンパイルされ、実行されますが、ループは無限です。受信したデータ文字は認識されません。それにもかかわらず、大いに助けてくれてありがとう。 – Khalil

関連する問題