more responses implemented
This commit is contained in:
@@ -37,6 +37,24 @@ namespace epics {
|
||||
errStr);
|
||||
}
|
||||
|
||||
int optval = _broadcast ? true : false;
|
||||
int retval = ::setsockopt(socket, SOL_SOCKET, SO_BROADCAST, &optval,
|
||||
sizeof(optval));
|
||||
if(retval<0) errlogSevPrintf(errlogMajor,
|
||||
"Error setting SO_BROADCAST: %s", strerror(errno));
|
||||
printf("_broadcast: %d\n", _broadcast);
|
||||
|
||||
// set the socket options
|
||||
//if (_reuseSocket)
|
||||
// epicsSocketEnableAddressUseForDatagramFanout(socket);
|
||||
|
||||
optval = _reuseSocket ? true : false;
|
||||
retval = ::setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &optval,
|
||||
sizeof(optval));
|
||||
if(retval<0) errlogSevPrintf(errlogMajor,
|
||||
"Error setting SO_REUSEADDR: %s", strerror(errno));
|
||||
printf("_reuseSocket: %d\n", _reuseSocket);
|
||||
|
||||
/* from MSDN:
|
||||
* Note: If the setsockopt function is called before the bind
|
||||
* function, TCP/IP options will not be checked by using TCP/IP
|
||||
@@ -44,8 +62,9 @@ namespace epics {
|
||||
* call will always succeed, but the bind function call can fail
|
||||
* because of an early setsockopt call failing.
|
||||
*/
|
||||
// still we need to set SO_REUSEADDR befire bind
|
||||
|
||||
int retval = ::bind(socket, (sockaddr*)&(bindAddress.sa),
|
||||
retval = ::bind(socket, (sockaddr*)&(bindAddress.sa),
|
||||
sizeof(sockaddr));
|
||||
if(retval<0) {
|
||||
errlogSevPrintf(errlogMajor, "Error binding socket: %s",
|
||||
@@ -53,20 +72,6 @@ namespace epics {
|
||||
THROW_BASE_EXCEPTION(strerror(errno));
|
||||
}
|
||||
|
||||
// set the socket options
|
||||
|
||||
int optval = _reuseSocket ? 1 : 0;
|
||||
retval = ::setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &optval,
|
||||
sizeof(optval));
|
||||
if(retval<0) errlogSevPrintf(errlogMajor,
|
||||
"Error setting SO_REUSEADDR: %s", strerror(errno));
|
||||
|
||||
optval = _broadcast ? 1 : 0;
|
||||
retval = ::setsockopt(socket, SOL_SOCKET, SO_BROADCAST, &optval,
|
||||
sizeof(optval));
|
||||
if(retval<0) errlogSevPrintf(errlogMajor,
|
||||
"Error setting SO_BROADCAST: %s", strerror(errno));
|
||||
|
||||
// sockets are blocking by default
|
||||
|
||||
return new BlockingUDPTransport(responseHandler, socket,
|
||||
|
||||
Reference in New Issue
Block a user