Salve a tutti ho bisogno una delucidazione in particolare.


Il mio server scritto in c++ accetta ed risponde ai vari socket connessi in thread separati.

mostro solo la parte necessaria

Codice PHP:

void MyThread
::readyRead(){    // Ottengo le informazioni dal socket    
QByteArray Data socket->readAll();

  
// Scrivo il DataByte ricevuto dal client    
qDebug() << socketDescriptor << " Data in: " << Data;

    
//Rispondo al socket inviando il messaggio   
 
socket->write("Messaggio Ricevuto");} 


Mentre la parte client

Codice PHP:


 
public static System.Net.Sockets.TcpClient clientSocket;       
 public static 
string msg "";
 public static 
string server_ip "127.0.0.1";        
public static 
int server_port 8888;



//Connetto il socket al server     
public static void connect()        
{           
 
clientSocket = new System.Net.Sockets.TcpClient();
  
clientSocket.Connect(server_ipserver_port);
  }



//Disconnetto il socket
 
public static void Disconnect()        {            clientSocket.Close();        }




//Invio un pacchetto al server
       
public static string SendAction(string cmd)        
{           
 try            
{               
 
NetworkStream serverStream clientSocket.GetStream();    
            
byte[] outStream System.Text.Encoding.ASCII.GetBytes(cmd); //Client Invia Messaggio                serverStream.Write(outStream, 0, outStream.Length);               
 
serverStream.Flush();
                
byte[] inStream = new byte[10025];                
serverStream.Read(inStream0, (int)clientSocket.ReceiveBufferSize);      
          
string returndata System.Text.Encoding.ASCII.GetString(inStream);   
             
string[] returndata.Split('|');      
          
msg a[0];           
     return 
msg;           
 }         
   catch       
     {           
     return 
"";     
       }     
   } 


Il problema è questo non sò se sbaglio io qualcosa o non.

1) Faccio effettuare la connessione void connect();
2) Gli invio un semplice comando al server
di conseguenza ottengo una risposta.


Fin qui tutto bene non dovrebbero esserci problemi.

Tranne il fatto che ogni qualvolta che invio un messaggio al server
utilizzando la funzione SendAction() e come se un nuovo socket si connettesse al server.

Questo me ne accorgo perche sul server separando i socket in diversi thread ho deciso di farmi mostrare l'ID del thread in apertura e compare tipo


372 Client Connected
372 Data in: Hello World
380 Client Connected

-- Alla chiusura del client

372 Client Disconnected
380 Client Disconnected


Quindi suppongo che sia un problema nel codice .net ma non trovo il problema.

PS: Testando tramite telnet funziona tutto regolarmente. Ogni socket risponde per fatti suoi