2011-01-17 17 views
2

よく、私はポート4でサーバーとして動作しているC#アプリケーションで作業しています。クライアントとして機能する私のWebサイトのPHPスクリプト。サーバーに接続できますが、サーバーまたはクライアントがデータを送信しようとしたときに接続できます。データは乱数と記号だけになります。phpとc#tcp通信の問題

$msg = $host + " connected;"; 
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_connect($socket, $host, 4); 
socket_write($socket, $msg, strlen($msg)); 
socket_close($socket); 

のC#:

PHP以下 スクリプト

while (heartbeat == false) 
       { 
        if (listener.Pending()) 
        { 
         heartbeatC = listener.AcceptTcpClient(); 
         //heartbeatS = listener.AcceptSocket(); 
         NetworkStream heartBeatStream = heartbeatC.GetStream(); 
         string heartbeatEP = heartbeatC.Client.RemoteEndPoint.ToString(); 
         string heartbeatIP = heartbeatEP.Remove(heartbeatEP.IndexOf(':'), heartbeatEP.Length - heartbeatEP.IndexOf(':')); 
         if (heartbeatIP == Dns.GetHostAddresses("***.********.com")[0].ToString()) 
         { 
          dottime.Enabled = false; 
          Console.WriteLine("\nHeartbeat."); 
          bool heartbeatR = false; 
          while (heartbeatR == false) 
          { 
           if (heartBeatStream.DataAvailable) 
           { 
            //StreamReader sr = new StreamReader(heartBeatStream); 
            byte[] message = new byte[1024]; 
            int bytesRead = 0; 
            bytesRead = heartbeatC.Client.Receive(message); 
            ASCIIEncoding encoder = new ASCIIEncoding(); 
            string msg = encoder.GetString(message); 
            Console.WriteLine("Server: " + msg); 
            heartbeatR = true; 
           } 
          } 
          heartbeat = true; 
         } 
         else 
         { 
          heartbeatC.Client.Disconnect(true); 
         } 
        } 
       } 
+0

関連しないヒント:[usingステートメント](http://msdn.microsoft.com/en-us/library/yh598w02.aspx)を使用して、ストリームやソケットなどのリソースが正しく閉じられるようにします。さて、 "乱数と記号"によって、あなたはそれぞれのラン(ランダム)ごとに違うのですか?それらは常に同じですが間違っていますか? –

+0

私はあなたの変更を元に戻しました(あなたは質問全体を削除しました!)。それは、同じ問題を抱えている可能性のある他の人たちへの将来の参考になるようにしましょう。これは、StackOverflowのすべてです。 ;) – netcoder

答えて

3

は、私はあなたの問題は、この行であると思う:

$msg = $host + " connected;"; 

PHPで文字列連結演算子は.です。

$msg = $host . " connected;"; 
+0

うわー、それは私がとても愚かな感謝を感じていた – Corvin

+1

IMOはあなたが恥ずかしい気分にさせるべきではない簡単な間違いです。これは構文上の小さなエラーで、私はほとんどC#の作業をしているので、しばらくの間、PHPを使用しています。 – jlafay

関連する問題