本文整理汇总了C++中Cat::GetSocket方法的典型用法代码示例。如果您正苦于以下问题:C++ Cat::GetSocket方法的具体用法?C++ Cat::GetSocket怎么用?C++ Cat::GetSocket使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cat
的用法示例。
在下文中一共展示了Cat::GetSocket方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PLUG
/**********************************************
* client to ZDENEK HONS SERVER
* cat runx.dat | nc -l -p 9302
* this is a client that connects to a server...
*/
int* PLUG(int* par, int* par2){
concurrent_queue<int> *buffer=(concurrent_queue<int>*)par;
char ch[200];
// if(XTERM!=NULL)fprintf(XTERM,"PUSH RS push-remote (network) par==%d; pointer==%d\n", par,(int)buffer );
sprintf(ch,"%s","PUSHNET: entered..." );table_log(0,ch);
Long64_t cnt=0;
char ipaddress[100];
int port;
//-------- here I will control with control.mmap file------
if ((mmapfd = open("control.mmap", O_RDWR, 0)) == -1) err(1, "open");
mmap_file=(char*)mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, mmapfd, 0);
if (mmap_file == MAP_FAILED) errx(1, "either mmap");
char mmap_result[100];
//-------- here I will control with control.mmap file------
char acqxml2[100];
TokenGet( "file=" , mmap_file , acqxml2 ); // takes a value from mmap
TSmallish_xml xml( acqxml2 );
xml.DisplayTele( xml.mainnode, 0, "plugins","pusher","ip" );
sprintf( ipaddress,"%s", xml.output );
xml.DisplayTele( xml.mainnode, 0, "plugins","pusher","port" );
port=atoi(xml.output );
//original char strbuf[2000000];// 20MB
char strbuf[4000000];// 2MB 711kB; 4MB 1700kB
int *buffer4p;
buffer4p=(int*)&strbuf[0];
int d,i,ii;
int maxtrans=2000000;
TSocket *socket;
double resrun=1.0;
// int downtimef;//, downtime;
int trials=10; //10 seconds of timeouts
while (resrun>0.0){// ----- - -- READ ALL REPEATING CONNECTIONS --- - -- -- - -- - - -
// DRUHA STRANA LISTENS !!!!!!!!!!!!!!!!!!!!!!!!!!
resrun=TokenGet( "run=", mmap_file , mmap_result ); // if run==0 => KILL HERE
if (resrun<1.0){ break;}
Cat Blbka;
Blbka.Print();
socket=Blbka.GetSocket( ipaddress, port ) ;
if ( Blbka.WasTimeOut()!=0 ) {
sprintf(ch,"P %s\n", "After TSocket - fTimeOut==1"); table_log(0,ch);
break;
}
int ii_init;
trials=10; //GOOD TO BE DEFINED IN XML as also select timeout
ii_init=0;// offset if data%4 != 0
resrun=TokenGet( "run=", mmap_file , mmap_result ); // if run==0 => KILL HERE
if (resrun<1.0){ break;}
while ( (socket)&&(resrun>0.0) ){// ----- - -- READ ONE CONNECTION -------
//DANGER THAT I MISS 3/10 of EVENTS..... MAYBE THIS IS TO TUNE:
//3000:50 ==1.6%
// i==0 => TIMEOUT...... ??
// FINALY 2sec timeout, 10x repeat, 50ms wait (TO BE TESTED)
if (PUSHDEBUG!=0){sprintf(ch,"PUSH-net waiting result=%d ", i ); table_log(0,ch);}
i=(int)socket->Select(TSocket::kRead, 2000);//timeout 1sec, repeat 5x
if (PUSHDEBUG!=0){sprintf(ch,"PUSH-net Select result i=%d ", i ); table_log(0,ch);}
//d=0;//nevim jestli to tu nedela binec
if (i>0) {//####CASE i>0 ####
//-- sprintf(ch,"P %s\n", "before recvraw"); table_log(0,ch);
d=(int)socket->RecvRaw( &strbuf[ii_init], maxtrans, kDontBlock ); // read small buffer
if (PUSHDEBUG!=0){ sprintf(ch,"PUSH-netw socket got %d bytes; init=%d ", d, ii_init ); table_log(0,ch);}
//.........这里部分代码省略.........