Re: SetSockOpt with SO_REUSEADDR parameter
- From: Norbert Unterberg <nunterberg@xxxxxxxxxxxxxxxxx>
- Date: Fri, 23 Mar 2007 11:57:36 +0100
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
.
- References:
- Re: SetSockOpt with SO_REUSEADDR parameter
- From: Joseph M . Newcomer
- Re: SetSockOpt with SO_REUSEADDR parameter
- From: mmlab_js
- Re: SetSockOpt with SO_REUSEADDR parameter
- From: Norbert Unterberg
- Re: SetSockOpt with SO_REUSEADDR parameter
- From: Norbert Unterberg
- Re: SetSockOpt with SO_REUSEADDR parameter
- Prev by Date: CEditCtrl with automatic line feed
- Next by Date: Strange problem initialising class members
- Previous by thread: Re: SetSockOpt with SO_REUSEADDR parameter
- Next by thread: Re: SetSockOpt with SO_REUSEADDR parameter
- Index(es):
Relevant Pages
|