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_ip, server_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(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
string[] a = 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