![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Error: No Route to host...urgent {socket() connection} | arunchaudhary19 | High Level Programming | 6 | 10-30-2007 12:10 AM |
| Socket programming:One server two port | abc.working | UNIX for Dummies Questions & Answers | 1 | 10-17-2007 09:32 AM |
| Session PID & socket connection pid | pcx26 | UNIX for Dummies Questions & Answers | 1 | 03-30-2006 09:06 AM |
| [Problem]Reuse port in BSD socket | Namely | High Level Programming | 1 | 11-28-2003 07:36 AM |
| socket on serial port | kintoo | High Level Programming | 2 | 07-31-2001 12:44 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
|||
|
Cloning a socket connection, using other port numbers
Hello everybody,
I've coded a multi-client server based on internet sockets using the scheme listen on port X-accept-fork, exactly like beej's guide At some point I would like to establish a secondary connection between a client and the server-child serving him. I was considering the server-child bind() a socket to port X+1 listen() to it and then accept() a connect()ion by the client.But that can't be done, because if 2 server-children do that simultaneously, one would get "address already in use" error. So then I've considered the client listen()ing on the Y+1 port (Y is the port assigned to the client's socket automatically by the primary connect() ).But my problem here is how can I find this port ? getpeername() on client's socket gives me the server's address & port.Is there any function giving the local address & port ? I know that some problems remain. I am not guaranteed that port Y+1 is available. A possible solution is that the client could send a free port number to the server through the primary connection and then the server-child connect()s to that port. Or another one: The server-child knows the client's Y port when server-parent accepted() the connection.So server-child could send it back to the client. But these aren't elegant solutions.Have you any ideas or suggestions? Thank you |
| Forum Sponsor | ||
|
|
|
|||
|
well, to me that sounds all a bit complicated. why not accept new connections on one specified port,then if a client wants another connection, it just asks at that same port again. if a connection is accepted it gets it own socket. there is no need to chose a port for every connection the server gets in. if you have to choose ports within the client, just do it randomly above 1024 and retry if one wont open.
Last edited by sonicx; 12-08-2007 at 04:59 AM. Reason: typos |
|
|||
|
Another couple of examples
(a) X's DISPLAY environment variable, where the host and port are encoded in a single string (port = display+6000) (b) CORBA, where an IOR contains hostname and port Both of these have problems when it comes to firewalls, the best solution for X for instance is using Xnest to proxy the display on the far side of the firewall. CORBA introduced bidirectional-IOP to help solve the firewall-traversal problem by attempting to reuse existing connections. |
|||
| Google The UNIX and Linux Forums |