Example of Client-Server communication: the Client
{
// Client program which creates and fills a histogram. Every 1000 fills
// the histogram is send to the server which displays the histogram.
//
// To run this demo do the following:
// - Open three windows
// - Start ROOT in all three windows
// - Execute in the first window: .x hserv.C
// - Execute in the second and third windows: .x hclient.C
// If you want to run the hserv.C on a different host, just change
// "localhost" in the TSocket ctor below to the desried hostname.
gROOT->Reset();
gBenchmark->Start("hclient");
// Open connection to server
TSocket *sock = new TSocket("localhost", 9090);
// Wait till we get the start message
char str[32];
sock->Recv(str, 32);
// server tells us who we are
int idx = !strcmp(str, "go 0") ? 0 : 1;
if (idx == 0) {
// Create the histogram
hpx = new TH1F("hpx","This is the px distribution",100,-4,4);
hpx->SetFillColor(48); // set nice fillcolor
} else {
hpx = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
}
TMessage mess(kMESS_OBJECT);
//TMessage mess(kMESS_OBJECT | kMESS_ACK);
// Fill histogram randomly
gRandom->SetSeed();
Float_t px, py;
const int kUPDATE = 1000;
for (int i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
if (idx == 0)
hpx->Fill(px);
else
hpx->Fill(px,py);
if (!i%kUPDATE) {
mess.Reset(); // re-use TMessage object
mess.WriteObject(hpx); // write object in message buffer
sock->Send(mess); // send message
}
}
sock->Send("Finished"); // tell server we are finished
gBenchmark->Show("hclient");
// Close the socket
sock->Close();
}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.