[Ace-users] [ace-users] Getting a TCP socket connection with a unique port per thread

Jim Hodapp james.hodapp at gmail.com
Wed Feb 13 10:35:08 CST 2008


I am trying to use ACE to connect to a single TCP server on port 554.  
I am using an ACE_SOCK_Connector and ACE_SOCK_Stream for this. I have  
this connection being established in a class of mine that inherits  
from ACE_Task<ACE_MT_SYNCH> specifically. I cannot seem to get this  
connection to occur via a unique source TCP port number randomly  
selected by the OS. I am doing the following to establish my connection:

void myConnectFunction()
{
ACE_INET_Addr address(this->RTSPServerPort, this->serverIP.c_str());
ACE_SOCK_Connector serverConnector;
ACE_Time_Value cTimeout(Connection::connectTimeout);

while (serverConnector.connect(tcpStream, address, &cTimeout) == -1)
{
	// Check for errors, timeouts, etc...
}
}

mySendFunction(const Payload *payload)
{
ACE_Time_Value sTimeout(this->sendTimeout);
if (this->tcpStream.send_n(payload->getPayload().c_str(), payload- 
 >getPayload.length(), &sTimeout) == -1)
{
	// Check for errors, timeouts, etc...
}
}

Each of these functions are both called per each thread instance. I  
cannot get any of the sends to go out on anything but the same source  
port number. I need these to be different port numbers. Is there  
something obvious I'm doing wrong?

I'm using ACE version 5.4.7 (as packaged by Ubuntu Linux 7.10).
OS: Ubuntu Linux 7.10

Any help would be appreciated.

Jim



More information about the Ace-users mailing list