Changeset 3907 in Sophya for trunk/AddOn/TAcq
- Timestamp:
- Nov 5, 2010, 7:58:07 PM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqueth.cc
r3904 r3907 59 59 sok.SendAll(msg,BRTCPMSGLEN); 60 60 sok.ReceiveAll(msg,BRTCPMSGLEN); 61 if (strncmp(msg,"BAORadio-EthernetReader-OK",26)!=0) 61 if (strncmp(msg,"BAORadio-EthernetReader-OK",26)!=0) { 62 msg[BRTCPMSGLEN-1]='\0'; 63 cout << "PCIEToEthernet:ERROR/ bad Init_Acknowledge message from EthernetReader : \n " << msg << endl; 64 usleep(10000); 62 65 throw SocketException("PCIEToEthernet:ERROR/ Connection to EthernetReader not established "); 66 } 63 67 cout << " PCIEToEthernet: Ethernet connection established for DMA/fiber" << i << " with " << destname_[j] << endl; 64 68 vskt.push_back(sok); … … 406 410 for(int ii=0; ii<BRTCPMSGLEN; ii++) msg[ii]='\0'; 407 411 sok.ReceiveAll(msg,BRTCPMSGLEN); 408 if (strncmp(msg,"BAORadio-PCIEToEthernet",23)!=0) 412 if (strncmp(msg,"BAORadio-PCIEToEthernet",23)!=0) { 413 cout << " EthernetReader:ERROR, bad init message from PCIEToEthernet client -> throw SocketException" << endl; 409 414 throw SocketException("EthernetReader:ERROR/ Bad message from PCIEToEthernet client !"); 415 } 410 416 int ia,ib,ic,id,ie; 411 417 sscanf(msg+25,"%d %d %d %d %d",&ia,&ib,&ic,&id,&ie); … … 414 420 strcpy(msg,"BAORadio-EthernetReader-BAD MMgrNbPaquet/MMgrPaquetSize()"); 415 421 sok.SendAll(msg,BRTCPMSGLEN); 422 cout << " EthernetReader:ERROR, Bad client.MMgrNbPaquet/PaquetSize NbPaq=" << ia << " PaqSz=" << ib 423 << " Reader_PaqSz=" << memgr_.PaqSize() << endl; 424 usleep(10000); 416 425 throw SocketException("EthernetReader:ERROR/ Bad MMgrNbPaquet/MMgrPaquetSize() from PCIEToEthernet client !"); 417 426 } -
trunk/AddOn/TAcq/swrapsock.cc
r3897 r3907 166 166 : Socket() 167 167 { 168 Initialize(NULL, port, nconmax); 169 } 170 171 /* --Methode-- */ 172 ServerSocket::ServerSocket(const char* inadr, int port, int nconmax) 173 : Socket() 174 { 175 Initialize(inadr, port, nconmax); 176 } 177 178 /* --Methode-- */ 179 ServerSocket::ServerSocket(string const& inadr, int port, int nconmax) 180 : Socket() 181 { 182 Initialize(inadr.c_str(), port, nconmax); 183 } 184 185 186 /* --Methode-- */ 187 void ServerSocket::Initialize(const char* str_inadr, int port, int nconmax) 188 { 168 189 int s,rc; 169 190 s = socket(AF_INET, SOCK_STREAM, 0); 170 191 if (s < 0) { 171 cout << "ServerSocket () Pb socket()ErrNo=" << errno << endl;172 throw SocketException("ServerSocket () Pb socket()");192 cout << "ServerSocket::Initialize() Pb socketErrNo=" << errno << endl; 193 throw SocketException("ServerSocket::Initialize() Pb socket()"); 173 194 } 174 195 skt = s; … … 180 201 ipskt.sin_family = AF_INET; 181 202 ipskt.sin_port = htons(port); 182 ipskt.sin_addr.s_addr = INADDR_ANY; 203 if (str_inadr==NULL) { // pas d'adresse IP specifie 204 ipskt.sin_addr.s_addr = INADDR_ANY; 205 } 206 else { // adresse IP specifie sous la forme uuu.xxx.yyy.zzz. 207 ipskt.sin_addr.s_addr = inet_addr(str_inadr); 208 } 183 209 /* Je fais un cast explicit de sockaddr_in * (Internet) en sockaddr * */ 184 210 rc = bind(skt, (struct sockaddr *)(&ipskt), sizeof(ipskt)); 185 211 if (rc < 0) { 186 212 Close(); 187 cout << "ServerSocket () Pb bind() ErrNo=" << errno << endl;188 throw SocketException("ServerSocket () Pb bind()");213 cout << "ServerSocket::Initialize() Pb bind() ErrNo=" << errno << endl; 214 throw SocketException("ServerSocket::Initialize() Pb bind()"); 189 215 } 190 216 } -
trunk/AddOn/TAcq/swrapsock.h
r3901 r3907 88 88 public : 89 89 ServerSocket(int port, int nconmax); 90 ServerSocket(const char* inadr, int port, int nconmax); 91 ServerSocket(string const& inadr, int port, int nconmax); 90 92 Socket WaitClientConnection(); 91 93 virtual int Close(); // redefinition de la methode de Socket::Close() 92 94 93 95 protected: 96 void Initialize(const char* inadr, int port, int nconmax); 97 94 98 int portid; 95 99 struct sockaddr_in ipskt; -
trunk/AddOn/TAcq/tsok.cc
r3639 r3907 18 18 19 19 void burawtst(); 20 int serverside( );20 int serverside(const char* adr=NULL); 21 21 int clientside(string& servname, string& msg, string& args); 22 22 … … 31 31 if (narg < 2) { 32 32 cout << " Erreur Argument / tsok.cc : Socket class tests \n" 33 << " Usage : tsok S/ C [servername=localhost] [OPEMsg=Hello] [NLoop,SizeX,SizeY] [RIOS_NPaq=16]\n"33 << " Usage : tsok S/s/C [servername=localhost] [OPEMsg=Hello] [NLoop,SizeX,SizeY] [RIOS_NPaq=16]\n" 34 34 << " Ex: tsok S or tsok C serverName or \n" 35 35 << " tsok C serverName PPFSOCKET 5,1000,800 \n" 36 << " S : run tsok as server side\n"36 << " S/s : run tsok as server side, (S: specify ServerSocket In_Adress) \n" 37 37 << " C : run tsok as client side \n" 38 38 << " OPEMsg : Operation select on client side (=XXX , PPFSOCKET , STOP) \n" … … 42 42 } 43 43 bool fgserv = false; 44 if (*arg[1] == 'S') fgserv = true; 44 bool fginadr = false; 45 if (*arg[1] == 's') fgserv = true; 46 else if (*arg[1] == 'S') { fgserv=true; fginadr=true; } 45 47 string servname = "localhost"; 46 48 if (narg > 2) servname = arg[2]; … … 55 57 SophyaInit(); 56 58 InitTim(); 57 if (fgserv) rc=serverside(); 59 if (fgserv) { 60 if (fginadr) rc=serverside(servname.c_str()); 61 else rc=serverside(); 62 } 58 63 else if (*arg[1] == 'C') rc=clientside(servname, opemsg, oargs); 59 64 else burawtst(); … … 76 81 77 82 /* --Fonction-- */ 78 int serverside( )83 int serverside(const char* adr) 79 84 { 80 85 int rc = 66; 81 86 cout << " ======== tsok.cc / ServerSide ============ " << endl; 82 cout << " Creating server socket ... , PortId= " << PORTID << endl; 83 ServerSocket srv(PORTID, 1); 87 if (adr !=NULL) cout << " Creating server socket InAddress=" << adr << ", PortId= " << PORTID << endl; 88 else cout << " Creating server socket ... , PortId= " << PORTID << endl; 89 ServerSocket srv(adr, PORTID, 1); 84 90 bool fgstop = false; 85 91 int nc = 0; … … 144 150 } // fin while(! fgbye) 145 151 cout << "ServerSide: Closing current socket ..." << endl; 146 skt.Close(); 152 skt.Close(); 147 153 rc = 0; 148 154 } // fin while(!fgstop)
Note:
See TracChangeset
for help on using the changeset viewer.