Tim Judd wrote:
Hi Pid, all

I'm disappointed the responses I've gotten seemingly to be scolding messages. I am reading up on documentation, I am reading the APIs, I am reading everything I can. Think of Citrix (in Windows environments) - code is executed on the server and displayed on your desktop; X11 forwarding does the same thing. I don't know which machine is executing the code

I understand you guys are trying to help, but I am disappointed all I'm hearing is "you're doing it wrong" basically. I was hoping a quick answer to know which machine is executing the code which would be the same side that has it bound.


Does anyone know which machine will bind?

You are not being scolded, you are being pointed to sources of information about TCP/IP which may help you phrase your questions in a way that people here may have an easier time understanding and answering. Nobody really feels like re-writing what these articles already explain at length, and which has basically nothing to do with helping people with Tomcat, which is what the helping souls on this forum are trying to do.

Not because you are - wrongly - complaining, but because it may avoid other people wasting their time, here is a brief overview :

- a socket is a OS-level structure which represents a "network channel" between 2 applications (possibly on different computers)
- there are 2 types of sockets :
  - a "server" (or "listening") socket
  - a "client" socket
- the terms "bind" or "binding" are used only with the "server" type of socket
- an application can request from the OS to allocate (or "open") a socket for it, and when it does that, it specifies if it wants a "server" or "client" socket. If the requested socket is of the "server" type, then the action of requesting this socket may be called "binding". - a server socket is "passive" : it sits there, waiting for connections to it. When it receives a connection, it informs the application that is "bound" to it. This server application can then read what the other party (a client) sent to this socket, and respond over the same socket.
- a client socket's purpose is usually to be used to "connect" to a distant 
server socket.
Normally the purpose is to allow the application which owns the client socket, to send some request or message to the application which is bound to the server socket (which is at the other end of the link), and to receive a response over that same channel and socket.
- all the above is true for TCP, and a bit less so for UDP.
- and finally, no matter what type of socket we are talking about, when an application asks the OS to create (open) a socket for it, it is always on the same server where this application runs. So an application running on server A, can only bind to or open a socket on server A.

Do you understand now why your questions are a bit confusing ?

Just quoting one of them :
"If I develop a webapp that listens for TCP/UDP sockets, which machine is
 actually listening?"

Hopefully, the above makes clear that an application does not "listen for sockets", and why everyone here is a bit uncertain about what to answer.

And a webapp usually does not open any kind of socket, since it (indirectly) receives requests and sends responses through Tomcat (which does own sockets for that). A webapp could open a separate client socket, but it would only do that if it wanted itself to talk, as a client, to some separate server application somewhere.






---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to