本文整理汇总了C++中socket_t::reinit方法的典型用法代码示例。如果您正苦于以下问题:C++ socket_t::reinit方法的具体用法?C++ socket_t::reinit怎么用?C++ socket_t::reinit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类socket_t
的用法示例。
在下文中一共展示了socket_t::reinit方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
fd_set read_fds = master;
int readCnt=select(fdmax+1, &read_fds, NULL, NULL, &timeout);
if( readCnt == -1 ) {
makeLog(LOG_ERR,"Main: select error: %s",strerror(errno));
exit(1);
}
reconnector.tryReconnect(10);
if ( readCnt > 0 ) {
//run through the existing connections looking for data to be read
for(hSocket = 0; hSocket <= fdmax; hSocket++) {
if(FD_ISSET(hSocket, &read_fds))
{ // we got one...
if(listener.handles(hSocket)) {
// buffer for client data
ictDatagram_t ictDatagram;
int recvlen = listener.recv(ictDatagram.data(), listeningArgs.mtu, 0);
if (recvlen>0) {
if (copier.inited()) {
copier.write(ictDatagram.data(),recvlen);
}
ictDatagram.setDataLength(recvlen);
if (!sendingSuspended) {
ictDatagram.setTime(getMNow());
ictDatagram.setNumber(number);
pushDatagram (ictDatagram);
if (streamingArgs.bitrate) {
// makeLog(LOG_DEBUG,"Writenumber: %u",number);
write(mypipe[1],&number,sizeof(number));
// outQueue.push_back ( number );
} else {
int sentcount=sender.send(ictDatagram,ictDatagram.size(),0);
}
number++;
} else {//if suspended
uint64_t now=getMNow();
if (now-lastAnnounceTime>30*1000) {
sender.send("UU",2,0);
lastAnnounceTime=now;
}
} //if suspended
} //if recvLen>0
else if (recvlen==0){//Client must be reconnected!!!!
if (listeningArgs.proto.compare("tcp")==0) {
FD_CLR(listener.getHandle(),&master);
if (listener.isConnected()) {
listener.reinit();
}
/*
if (listener.connect()==0) {
makeLog(LOG_INFO,"Listener: Connected");
} else {
makeLog(LOG_INFO,"Listener: Reconnect failed");
sleep(10);
}
*/
reconnector.add(&listener,reconnectListener,NULL);
makeLog(LOG_INFO,"Listener: Disconnected");
}
} //if recvlen==0
} //if sock is listener
#ifndef CONTROL_THREAD
if (control.handles(hSocket)) {
char cmsg[1500];
int recvlen = control.recv((void*)cmsg,sizeof(cmsg),0);
if (recvlen>0) {
makeLog(LOG_DEBUG,"Processing control from main");
controlStr.append(cmsg,recvlen);
processControls(controlStr,control);
}
}
if (sender.handles(hSocket)) {
char cmsg[1500];
int recvlen = sender.recv(cmsg,sizeof(cmsg),0);
if (recvlen>0) {
makeLog(LOG_DEBUG,"Processing control from main");
controlStr.append(cmsg,recvlen);
processControls(controlStr,sender);
}
}
#endif
}
}//for
}//if readCnt>0
}
closelog();
return 0;
}
示例2: processControl
string processControl (const string Msg,const socket_t &sock) {
const CStrings data=split(" ",Msg);
const CStringsIterator name=data.begin();
string result="";
makeLog(LOG_DEBUG,"Control: Processing {%s}",Msg.c_str());
if (name->compare("SEND")==0) {
uint16_t resendNumber = (data.size()>1)?atoi(data[1].c_str()):0;
uint16_t cnt = (data.size()>2)?atoi(data[2].c_str()):0;
if (cnt<1) cnt=1;
// makeLog(LOG_DEBUG,"RESEND request: %d:%d",resendNumber,cnt);
bool wasMissing=false;
for (int i=0;i<cnt;i++) {
int missing = getDatagramLength(resendNumber);
if (missing<=0) {
wasMissing=true;
makeLog(LOG_INFO,"Streamer: Datagram lost: %d",resendNumber);
sendControl(stringprintf("SEND_OOB %d",resendNumber));
} else {
ictDatagram_t ictDatagram;
getDatagram(ictDatagram,resendNumber);
outQueue.push_front ( resendNumber );
// sendto(sender.socket,ictDatagram,ictDatagram.size(),0,(const sockaddr*)&sender.peer,sizeof(sender.peer));
}
resendNumber++;
}
if (wasMissing) {
makeLog(LOG_WARNING,"Streamer: Packet(s) is out of buffer");
}
}
else if (name->compare("STARTED")==0) {
makeLog (LOG_INFO,"Control: method STARTED");
}
else if (name->compare("KEPT")==0) {
keptLastTime=getMNow();
}
else if (name->compare("SETBUF")==0) {
//makelog ("Control message: {$msg1}");
int newBufferTime=(data.size()>1)?atoi(data[1].c_str()):-1;
if (newBufferTime!=-1 && cleaningArgs.bufferSize!=newBufferTime) {
cleaningArgs.bufferSize=newBufferTime;
makeLog (LOG_INFO,"Buffer is set to new value: %d",cleaningArgs.bufferSize);
}
return stringprintf("BUFSET %d",cleaningArgs.bufferSize);
}
else if (name->compare("RESETSTREAM")==0) {
FD_CLR(sender.getHandle(),&master);
sender.reinit();
FD_SET(sender.getHandle(),&master);
makeLog (LOG_INFO,"Streamer: Restart on receiver requested");
result+=stringprintf("STREAMRESET %d",0);
}
else if (name->compare("SUSPEND")==0) {
if (!sendingSuspended) {
sendingSuspended=true;
makeLog(LOG_INFO,"Streamer: Supended on receiver request");
}
return stringprintf("SUSPENDED %d",0); //TODO O by malo byt cislo noveho portu na vysielacej strane
}
else if (name->compare("RESUME")==0) {
sendingSuspended=false;
return stringprintf("RESUMED %d",0); //TODO O by malo byt cislo noveho portu na vysielacej strane
}
else if (name->compare("CINIT")==0) {
int newBufferTime=data.size()>1?atoi(data[1].c_str()):-1;
sendingSuspended=false;
makeLog(LOG_INFO,"Clinet initialization request from receiver");
if (newBufferTime!=-1 && cleaningArgs.bufferSize!=newBufferTime) {
cleaningArgs.bufferSize=newBufferTime;
makeLog (LOG_INFO,"Buffer is set to new value: %d",cleaningArgs.bufferSize);
result+=stringprintf("BUFSET %d",cleaningArgs.bufferSize);
}
result+=stringprintf("CINITED %d",0);//getSocketLocalPort(sender.socket)); //TODO O by malo byt cislo noveho portu na vysielacej strane
}
else if (name->compare("CUNINIT")==0) {
clearBuffer();
sendingInitialized=false;
result+=stringprintf("CUNINITED %d",0); //TODO O by malo byt cislo noveho portu na vysielacej strane
}
else if (name->compare("CONNECTCONTROL")==0) {
return "CONTROLCONNECT\n";
} else {
makeLog(LOG_ERR,"Control: unknown command: %s",name->c_str());
}
return result;
//.........这里部分代码省略.........