genericSocket implemented with also send/receive functions, possibility to select the binding network interface for the server and utilities to get the interface name, ip or mac

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@333 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
bergamaschi
2012-11-05 14:25:14 +00:00
parent 50beac1f8a
commit fa9449e447
3 changed files with 225 additions and 87 deletions

View File

@ -13,32 +13,6 @@ using namespace std;
int MySocketTCP::SendDataOnly(void* buf,int length){//length in characters
#ifdef VERY_VERBOSE
cout << "want to send "<< length << " Bytes" << endl;
#endif
int nsending;
int nsent;
if (file_des<0) return -1;
int total_sent=0;
while(length>0){
nsending = (length>send_rec_max_size) ? send_rec_max_size:length;
nsent = write(file_des,(char*)buf+total_sent,nsending);
if(!nsent) break;
length-=nsent;
total_sent+=nsent;
// cout<<"nsent: "<<nsent<<endl;
}
#ifdef VERY_VERBOSE
cout << "sent "<< total_sent << " Bytes" << endl;
#endif
return total_sent;
}
@ -59,44 +33,6 @@ int MySocketTCP::SendDataAndKeepConnection(void* buf,int length){//length in cha
}
int MySocketTCP::ReceiveDataOnly(void* buf,int length){//length in characters
int total_received=0;
if (file_des<0) return -1;
#ifdef VERY_VERBOSE
cout << "want to receive "<< length << " Bytes" << endl;
#endif
int nreceiving;
int nreceived;
while(length>0){
nreceiving = (length>send_rec_max_size) ? send_rec_max_size:length;
#ifdef VERY_VERBOSE
cout << "start to receive "<< nreceiving << " Bytes" << endl;
#endif
nreceived = read(file_des,(char*)buf+total_received,nreceiving);
#ifdef VERY_VERBOSE
cout << "received "<< nreceived << " Bytes on fd " << file_des << endl;
#endif
if(nreceived<0) break;
length-=nreceived;
#ifdef VERY_VERBOSE
cout << "length left "<< length << " Bytes" << endl;
#endif
total_received+=nreceived;
#ifdef VERY_VERBOSE
cout << "total "<< total_received << " Bytes" << endl;
#endif
// cout<<"nrec: "<<nreceived<<" waiting for ("<<length<<")"<<endl;
}
#ifdef VERY_VERBOSE
cout << "received "<< total_received << " Bytes" << endl;
#endif
return total_received;
}
int MySocketTCP::ReceiveData(void* buf,int length){//length in characters