Re: SetSockOpt with SO_REUSEADDR parameter
mmlab_js schrieb:
mmlab_js schrieb:
I override the CASyncSocket::Create to solve this problem.
Why is it so important to you to use the SAME source port number for all
clients? What is the *real* problem you are trying to solve? I simply do not
believe your boss told you to use the same server socket and port number for all
client streaming data. So what is the real issue?
I construct a streaming server that sending a real-time frame captured from
webcam to clients who login in. At first, because I don't know how to write a
server-client architecture, I reference
[http://support.microsoft.com/kb/192570]. At second, I want to add the UDP
socket into this architecture to send real-time frames. So, I add UDP socket
into CServerThread class and create it at
===============================================
BOOL CServerThread::InitInstance()
{
UINT dummy;
m_socket.GetPeerName(m_UdpSocket.m_strClientAddress, dummy);
m_UdpSocket.CreateSocket(DATA_PORT);
return TRUE;
}
===============================================
The client application create a UDP socket with the same port DATA_PORT and
it can get the real-time frame from server. That's my original idea.
That is basically fine. You just overlooked that there is no need to use
the same port number on both ends of the "connection". The clients
creates a socket on a spefific port number. The server creates a socket
on ANY port number, but it uses the client's port number as destination
port when sending the data.
When a server accepts a TCP connection, a new socket is created with a
"unused" port on server. So, every sockets will use different ports. Right???
Well, I think I was wrong on that one. Sorry for confusing you.
The accept call creates a new socket with the same local port number.
The difference is, that this socket is not in an unconnected (listening)
state.
There can only be one listening socket on any local port number.
The problem with UDP is that UDP does not have connections. So all
sockets you create and bind to a port are always listening sockets.
That's why you can only have one UDP socket per port number.
Norbert