mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 15:00:02 +02:00
fixed problem with increasing file descriptor when connecting to receiver
This commit is contained in:
parent
8d7445d347
commit
0a0dfb2dc6
@ -71,6 +71,7 @@ class sockaddr_in;
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#define DEFAULT_PACKET_SIZE 1286
|
#define DEFAULT_PACKET_SIZE 1286
|
||||||
@ -206,7 +207,6 @@ typedef struct
|
|||||||
|
|
||||||
socketDescriptor = socket(AF_INET, getProtocol(),0); //tcp
|
socketDescriptor = socket(AF_INET, getProtocol(),0); //tcp
|
||||||
|
|
||||||
|
|
||||||
if (socketDescriptor < 0) {
|
if (socketDescriptor < 0) {
|
||||||
cerr << "Can not create socket "<<endl;
|
cerr << "Can not create socket "<<endl;
|
||||||
return;
|
return;
|
||||||
@ -280,7 +280,11 @@ typedef struct
|
|||||||
if (socketDescriptor >= 0){ \
|
if (socketDescriptor >= 0){ \
|
||||||
close(socketDescriptor); \
|
close(socketDescriptor); \
|
||||||
} \
|
} \
|
||||||
file_des=-1; \
|
if(is_a_server and getProtocol() == TCP){\
|
||||||
|
if(file_des>0)\
|
||||||
|
close(file_des);\
|
||||||
|
}
|
||||||
|
file_des=-1; \
|
||||||
serverAddress.sin_port=-1; \
|
serverAddress.sin_port=-1; \
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -401,7 +405,6 @@ typedef struct
|
|||||||
cerr << "Can not create socket "<<endl;
|
cerr << "Can not create socket "<<endl;
|
||||||
file_des = socketDescriptor;
|
file_des = socketDescriptor;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if(connect(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
|
if(connect(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
|
||||||
cerr << "Can not connect to socket "<<endl;
|
cerr << "Can not connect to socket "<<endl;
|
||||||
file_des = -1;
|
file_des = -1;
|
||||||
@ -422,6 +425,16 @@ typedef struct
|
|||||||
|
|
||||||
int getsocketDescriptor(){return socketDescriptor;};
|
int getsocketDescriptor(){return socketDescriptor;};
|
||||||
|
|
||||||
|
|
||||||
|
void exitServer(){
|
||||||
|
if(is_a_server){
|
||||||
|
if (socketDescriptor>=0){
|
||||||
|
close(socketDescriptor);
|
||||||
|
socketDescriptor = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @short free connection */
|
/** @short free connection */
|
||||||
void Disconnect(){
|
void Disconnect(){
|
||||||
if (protocol==UDP){
|
if (protocol==UDP){
|
||||||
@ -429,18 +442,6 @@ typedef struct
|
|||||||
socketDescriptor=-1;
|
socketDescriptor=-1;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
||||||
/* close(socketDescriptor);
|
|
||||||
socketDescriptor=-1;
|
|
||||||
if(is_a_server){
|
|
||||||
if(file_des>=0){
|
|
||||||
close(file_des);
|
|
||||||
file_des=-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
if(file_des>=0){ //then was open
|
if(file_des>=0){ //then was open
|
||||||
if(is_a_server){
|
if(is_a_server){
|
||||||
close(file_des);
|
close(file_des);
|
||||||
@ -451,9 +452,6 @@ typedef struct
|
|||||||
}
|
}
|
||||||
file_des=-1;
|
file_des=-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -536,6 +534,9 @@ typedef struct
|
|||||||
}
|
}
|
||||||
mac[sizeof(mac)-1]='\0';
|
mac[sizeof(mac)-1]='\0';
|
||||||
|
|
||||||
|
if(sock!=1){
|
||||||
|
close(sock);
|
||||||
|
}
|
||||||
return string(mac);
|
return string(mac);
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -557,6 +558,9 @@ typedef struct
|
|||||||
strncpy(addr,p,sizeof(addr)-1);
|
strncpy(addr,p,sizeof(addr)-1);
|
||||||
addr[sizeof(addr)-1]='\0';
|
addr[sizeof(addr)-1]='\0';
|
||||||
|
|
||||||
|
if(sock!=1){
|
||||||
|
close(sock);
|
||||||
|
}
|
||||||
return string(addr);
|
return string(addr);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -145,8 +145,18 @@ void slsReceiverTCPIPInterface::stop(){
|
|||||||
|
|
||||||
|
|
||||||
cout<<"Shutting down TCP Socket and TCP thread"<<endl;
|
cout<<"Shutting down TCP Socket and TCP thread"<<endl;
|
||||||
|
cout << "Shutting down UDP Socket" << endl;
|
||||||
|
if(receiverBase){
|
||||||
|
receiverBase->shutDownUDPSockets();
|
||||||
|
|
||||||
|
cout << "Closing Files... " << endl;
|
||||||
|
receiverBase->closeFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
killTCPServerThread = 1;
|
killTCPServerThread = 1;
|
||||||
socket->ShutDownSocket();
|
socket->ShutDownSocket();
|
||||||
|
socket->exitServer();
|
||||||
cout<<"Socket closed"<<endl;
|
cout<<"Socket closed"<<endl;
|
||||||
void* status;
|
void* status;
|
||||||
pthread_join(TCPServer_thread, &status);
|
pthread_join(TCPServer_thread, &status);
|
||||||
@ -204,6 +214,7 @@ void slsReceiverTCPIPInterface::startTCPServer(){
|
|||||||
receiverBase->closeFile();
|
receiverBase->closeFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
socket->exitServer();
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user