2011-01-17 3 views
2

Ok, naja, ich arbeite an einer C# -Anwendung, die als Server an Port 4 fungiert. Und ein PHP-Skript auf meiner Website als Client. Es kann eine Verbindung zum Server herstellen, wenn der Server oder Client versucht, Daten zu senden. Die Daten erweisen sich nur als Zufallszahlen und Symbole. Scripts unterphp und C# tcp Kommunikationsproblem

PHP:

$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#:

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

Nicht verknüpfter Tipp: Verwenden Sie die [using-Anweisung] (http://msdn.microsoft.com/en-us/library/yh598w02.aspx), um sicherzustellen, dass Ressourcen wie Streams und Sockets korrekt geschlossen werden. Nun, mit "Zufallszahlen und Symbolen" meinen Sie, dass sie bei jedem Lauf anders sind (zufällig), oder sie sind immer gleich, aber falsch? –

+0

Ich habe Ihre Änderungen rückgängig gemacht (Sie haben die ganze Frage gelöscht!). Lassen Sie es, für zukünftige Bezugnahme auf andere, die das gleiche Problem haben könnten. Darum geht es bei StackOverflow. ;) – netcoder

Antwort

3

Ich denke, Ihr Problem mit dieser Linie ist:

$msg = $host + " connected;"; 

Der String-Verkettung Operator in PHP ist .:

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

Wow, das war es, ich fühle mich so dumm danke – Corvin

+1

IMO das ist ein einfacher Fehler, der dich nicht peinlich machen sollte. Es ist ein kleiner syntaktischer Fehler und ich mache das mit PHP hin und wieder, da ich meistens C# arbeite. – jlafay