Using new Socket( host, port );

how long does it take for a client to connect to the server.. How long does
socket = new Socket( host port);
take?
I ask because if it takes longer on some computers, my clients wont connect in the correct order..
Example:
Client1 is sent to the server then
Client2 is sent to the server then
Client3 is sent to the server..
Client1 takes 4 seconds to connect..
Client2 takes 1 second!
Client3 takes 1 second.
In this case client's 2 and 3 with get in before client1 but I want them to connect in the correct order? Do I need to worry about new Socket( host, port ) load times or are they negligible?

How long it takes depends on a lot of things - for example, on the network traffic. It's in general impossible to predict.
Why does your program require that the clients connect in a certain order?
If you really have to make sure that clients connect in a certain order, then you'll have to invent a mechanism to insure this yourself. For example, first tell client 1 to connect and wait for the connection to be established, then tell client 2 to connect and wait, etc.

Similar Messages

  • Can I re-use a socket  (2 way connection)

    I am sending various types of files across an socket. The files are going accross just fine. I do close the output stream on the client which wraps the socket. However, I would like to keep the socket open and send an XML file back to the client containing some information about what finally happens to the file. However, if I don't close the socket the file remains open and then will get munged. So, I guess I need a way to close the file writer but keep the socket open. Anyone know if this is possible or how to do this?
    Here's my client/server.
    <client>
    ...// basically gets the file name.
    Socket sock = new Socket( host, port );
    File fp = new File(fileName);
    FileInputStream fins = new FileInputStream(fp);
    long fsize = fp.length();
    int bsize = 1024000;
    byte[] bdata = new byte[bsize];
    DataOutputStream o = new DataOutputStream(sock.getOutputStream());
    int n=0;
    while (fsize>0)
    n = fins.read(bdata,0,bsize); // read 1mb from file
    o.write(bdata,0,n); // write it to the socket
    fsize-=n;
    o.close();
    System.out.println("File Sent");
    </client>
    <server>
    public class XMLServer implements Runnable {
    public static int DEFAULT_PORT = 22334;
    private Socket request = null;
    public XMLServer(Socket request) {
    this.request = request;
    public XMLServer(int port) {
    try {
    ServerSocket server = new ServerSocket( DEFAULT_PORT );
    System.out.println( "Server starting" );
    while ( true )
    // Wait for client request
    System.out.println( "Waiting...\n" );
    Socket socket = server.accept();
    System.out.println( "Request from client received. Processing request." );
    // Handle request
    XMLServer handler = new XMLServer( socket );
    Thread thread = new Thread( handler );
    thread.start();
    } catch(IOException ioex) {
    ioex.printStackTrace();
    public void run() {
    try {
    handleRequest();
    } catch(IOException ioex) {
    System.out.println("Error occurred while trying to service request.");
    System.out.println("Server stopped.");
    ioex.printStackTrace();
    System.exit(0);
    public void handleRequest() throws IOException {
    File fp = new File(fileName);
    FileOutputStream fout = new FileOutputStream(fp);
    int bsize = 1024000;
    byte[] bdata = new byte[bsize];
    DataInputStream i = new DataInputStream(request.getInputStream());
    int n=0;
    long totalbytes = 0;
    System.out.println("Receiving file");
    while ((n = i.read(bdata,0,bsize)) > 0)
    fout.write(bdata,0,n); // write it to the socket's stream
    totalbytes += n;
    System.out.println("File Read Complete " + totalbytes + " in length.");
    fout.close();
    System.out.println("File Closed");
    <server>

    You understand your problem completely.
    While convienient, it is not practical to use the
    socket streams that way in your application, because
    Sun early on made the decision that closing a stream
    wrapper always closes the inner stream. (Personally I
    wish they hadn't) Anyway, you'll now have to read the
    file into a byte array first, and send that array over
    the output stream.
    Makes sense?Ahhh.. Ok, so you're saying in order to keep the stream open, I would have to send the file in a packet structure so I can send the server the length of the file (in bytes) and then the file so that the server would know to read N bytes and I could then avoid immediately closing the socket? I guess that sounds ok. Kind o f wierd though.. Maybe I'll just use the ProgressMonitor and let that suffice.
    Eeek, tell me it isn't so...

  • New Socket() acting strangely under Windows

    Hello,
    First a little background:
    I have a client application that connects to a server application through a socket. The client first checks to see the server is 'reachable' using the .isReachable() method. If this return true, all is good. If it returns false, the application sets up to use a Microsoft Windows DUN connection and VPN to connect to the server. This is handled through a 3rd party .jar file called jdialup. Oh, one more thing, the client pc is connected to the network through a hub. In other words, the pc is connected to a hub. The hub is connected to the network using it's up-link port... Everything so far is pretty simple enough...
    Now the issue:
    If I disconnect the network cable from the back of the pc and run my client application, it says that the server is not reachable, which is fine. The application then dials out to our ISP and connects to our VPN. The client application connects to the server application through a socket and sends the request and receives the response. The client then disconnects. Everything is GOOD.
    Now, if I disconnect the network cable from the up-link on the hub, thus removing the client pc from the network, this is where the strangeness happens! I run my client application, it again says that the server is not reachable, which is fine. The application again dials out to our ISP and connects to our VPN. This is fine. Now though, when I attempt to make the socket connection to the server, it times out! The actual call to
    Socket socket = new Socket(ipaddress, port);times out...
    This seems very strange to me... Any ideas?
    PS: In both situations when I connect to the VPN, I can ping and telnet to the server. It is the Socket call that is acting strange...
    Thanks,

    I've been following this and I'm baffled by the
    discussion so far. Has the thread been trimmed? I believe we got off on a tangent, but the problem is that in certain circumstances the client application tries to connect to the server application the call the 'new Socket()' times out... You will have to read my original post...
    Anyway, I believe that I have figured it out. It was related to the gateway option in the network setup on the client pc.
    Originally I had the gateway option set to be an ip address internal to our network. Our network guy said that in this situation, I needed to set the gateway to an ip address outside out network. When I did that, everything now work beautifully. Why? I have no real idea as I am not a network guy, but it work now and I am happy...
    Thanks for everyones help and sorry for all the confusion.

  • Error while connecting to Microsoft Exchange server using javamail: "com.sun.mail.util.MailConnectException: Couldn't connect to host, port: host name , 993; timeout -1"

    I am trying to read mails from my outlook microsoft exchange server. Following is the code:
    public void readEmailsFromOutlook(/*String host, String username, String password*/ ) throws MessagingException, IOException {
          String host = "hostname";
          String username = "domain\\username";
          String password = "password"
          // Create empty properties
          Properties props = System.getProperties();
          props.setProperty("mail.smtp.auth","true");
          props.setProperty("mail.store.protocol","imaps");
          props.setProperty("mail.imap.auth.plain.disable","true");
          props.setProperty("mail.imap.host",host);
          props.setProperty("mail.imap.port","993");
          props.setProperty("mail.imap.user",username);
          props.setProperty("mail.imap.pwd",password);
          props.setProperty("mail.imap.debug","true");
          props.setProperty("mail.imap.ssl.protocols","SSL");
          props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
          props.setProperty("mail.imap.socketFactory.fallback", "false");
          props.setProperty("mail.imap.socketFactory.port", "993");
          // Get session
                     Session session = Session.getInstance(props, new ExchangeAuthenticator(username, password));
          session.setDebug(true);
          // Get the store
          Store store = session.getStore("imaps");
          //Store store = session.getStore();
          store.connect(host, username, password);
          // Get folder
          Folder folder = store.getFolder("INBOX");
          folder.open(Folder.READ_ONLY);
          BufferedReader reader = new BufferedReader(new InputStreamReader(
              System.in));
          // Get directory
          Message message[] = folder.getMessages();
          for (int i = 0, n = message.length; i < n; i++) {
            System.out.println(i + ": " + message[i].getFrom()[0] + "\t"
                + message[i].getSubject());
            System.out.println("Read message? [YES to read/QUIT to end]");
            String line = reader.readLine();
            if ("YES".equalsIgnoreCase(line)) {
              System.out.println(message[i].getContent());
            } else if ("QUIT".equalsIgnoreCase(line)) {
              break;
          // Close connection
          folder.close(false);
          store.close();
    But it threw the following error:
    DEBUG: setDebug: JavaMail version 1.5.1
    DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle]
    DEBUG IMAPS: mail.imap.fetchsize: 16384
    DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
    DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
    DEBUG IMAPS: mail.imap.appendbuffersize: -1
    DEBUG IMAPS: mail.imap.minidletime: 10
    DEBUG IMAPS: trying to connect to host <hostname>,port 993, isSSL true
    com.sun.mail.util.MailConnectException: Couldn't connect to host, port: 10.75.250.60, 993; timeout -1;
      nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:693)
    at javax.mail.Service.connect(Service.java:345)
    at javax.mail.Service.connect(Service.java:226)
    at com.capgemini.utilities.Utilities.readEmailsFromOutlook(Utilities.java:1261)
    Whats wrong with my code?
    Please help!!!!

    You're using the "imaps" protocol, but you've set properties for the "imap" protocol.  Change all the property names from mail.imap.* to mail.imaps.*.
    Also, get rid of all the socket factory properties.
    If you still can't connect, see these connection debugging tips.
    Most likely you're using the wrong host name or port number.  In almost all cases, it's better to just let JavaMail choose the correct port number.

  • How to write a socket in that i have to use an array of ports

    dear all
    Iam doing project in java in that iam using sockets. My problem is i want to keep array of ports in my programming. suppose one port is busy then it automatically take the other port in the array of ports. Please can any body give me the solution how to use that one. Or if any body know any site regrding that please send me. Ill be waiting for your rely.
    regards
    sonali

    Hi Sonali,
    You can use this. To test,
    javac Sockets.java
    java Sockets &
    java Sockets &
    Here I have used only 3 entries in the array. Server sockets bind and and then listen on them. This is for server sockets. You can write the client side part which will be similar to this.
    Hope it helps.
    Regards,
    Giridhar
    import java.net.*;
    public class Sockets
    ServerSocket socket = null;
    int ports[];
    int counter;
    public Sockets()
    counter = 0;
    ports = new int[3];
    ports[0] = 1000;
    ports[1] = 1900;
    ports[2] = 12000;
    public ServerSocket bindSocket()
    int backLog = 50;
    try
    socket = new ServerSocket(ports[counter], backLog, InetAddress.getByName("localhost"));
    System.out.println("server socket bound successfully at port " + ports[counter]);
    return socket;
    catch(BindException e)
    System.err.println("Port " + ports[counter] + "is busy, trying with " +
    ports[++counter]);
    if (counter == ports.length)
    System.out.println("Could not succeed with any port, returning null");
    return null;
    return bindSocket();
    catch(UnknownHostException uhe)
    System.err.println("wrong host name");
    return null;
    catch(java.io.IOException ioe)
    ioe.printStackTrace();
    return null;
    public static void main(String[] args)
    Sockets sockets = new Sockets();
    ServerSocket ss = sockets.bindSocket();
    try
    while(true)
    Socket acc = ss.accept();
    System.out.println("client accepted, break");
    break;
    System.out.println("tested, now closing the socket");
    ss.close();
    catch(java.io.IOException e)
    System.err.println("io exception while closing socket");

  • I just bought a new iMac and I am using a apple air port router.  How do I connect mt windows PC to the air port router do I can move files

    I Just purchased a 21.5 iMac and connected it to the Internet using a apple air port router.  How do I connect my windows PC to my air port router so I can transfer files.

    It makes life easier to install the airport utility for windows.. which has a couple of different apps in it.. if you airport is new type then the utility is too old.. but is still valuable for Bonjour which provides network information for shared devices in the apple world to windows.. and a disk access agent..
    It will also help the Apple computer access shared directory in the windows computer.. nowadays this is pretty easy.

  • Using both the display ports on the new mac book pro

    Hi, are there some one in Appel that can tell me if its possible to use both the display ports on the new mac book pro to show keynote on? or if its possible to make that possible? i would really like to be able to create a keynote with 5120 x 1600 pixels and get that output on two display ports, so that i can use my hardware to make a keynote with really nice reselution. its for use on a screen size of 18x4 meter.

    Connect one display to the Mini-Displayport and the other to a USB port using an adapter like this:
    http://eshop.macsales.com/item/NewerTech/VIDU2DVIA/
    Or buy a Matrox DualHead2Go DP Edition external video box and connect both displays to that, which in turn connects to the Mini-Displayport on the computer.
    There are limitations either way. A USB-connected display will be less responsive than one connected to the MDP, because USB 2 is slow. To use two displays with the Matrox box, I believe the displays must be identical. Read and understand all the caveats about each alternative before making a decision about which way to go.

  • Connecting my gen 4-5 nano to new HP laptop windows 8 using USB 3.0 port computer restarts

    Connecting my gen 4-5 nano to my new HP laptop Windows 8 using USB 3 port itunes opens then an error message "your PC ran into a problem and needs to restart ........." WDF Violation. If I don't disconnect the nano the computer will keep restarting. After restarting a window opens saying it wants to send the following files to Microsoft "C:\Windows\Minidump\010413-20875-01.dmp, C:\Users\Curt\AppData\Local\Temp\WER-69015-0.sysdata.xml, C:\Windows\Memory.DMP". It does this using any of the 3 USB 3 ports. Using the USB 2 port it works just fine. Thanks for any help and as info.  

    I found the solution!!!  Even ended up educating the tech -- who didn't have a clue. 
    I have a brand new  7th gen iPod Nano, a brand new Windows 8 laptop, and iTunes 11. Everything was working all fine and dandy until I unchecked "Enable Disc Usage in iTunes on my iPod.  Then all **** broke loose.  I got the blue screen of death with the WDF_violation and I couldn't even plug my Nano in without it crashing my computer, let alone access iTunes to re-enable Disc Usage. Because the crashes happened immediately after I did that I just KNEW it had something to do with that.  Trouble is, I couldn't fix it.... or so I thought. 
    I was on the phone with the tech, who was telling me it was a driver issue ( impossible because both the laptop and iPod are brand new) and I was looking around in iTunes while she did. 
    HERE IS YOUR SOLUTION:  Edit --> Preferences --> Devices.  Check Prevent iPods, iPhones and iPads from syncing automatically.  Then plug in your iPod, re-enable the Disc Usage, and voile!!!!!!  Problem solved.

  • New Socket takes too long / how to stop a Thread ?

    Hello to everyone,
    I have a problem that I have been hunting this ol' Sun website all day for a suitable answer, and have found people who have asked this same question and not gotten answers. Finally, with but a shred of hope left, I post...
    My really short version:
    A call to the Socket(InetAddress,int) constructor can take a very long time before it times out. How to limit the wait?
    My really detailed version:
    I have a GUI for which the user enters comm parameters, then the program does some I/O while the user waits (but there is a Cancel button for the Impatient), then the results are displayed. Here is quick pseudocode (which, by the way, worked great before there were Sockets in this program -- only serial ports):
    Main (GUI) thread:
         --> reset the stop request flag
         --> calls workerThread.start(), then brings up a Cancel dialog with a Cancel button (thus going to sleep)
         --> (awake by dialog closing -- dialog may have been closed by workerThread or by user)
         --> set stop request flag that worker thread checks (in case he's still alive)
         --> call workerThread.interrupt() (in case he's alive but asleep for some reason (???))
         --> call workerThread.join() to wait for worker thread to be dead (nothing to wait for if he's dead already)
         --> display worker thread's result data or "Cancelled..." information, whichever worker thread has set
    Worker thread:
         --> yield (to give main thread a chance to get the Cancel Dialog showing)
         --> do job, checking (every few code lines) that stop request flag is not set
         --> if stop request, stop and set cancelled flag for Main thread to handle
         --> if finish with no stop request, set result data for Main thread to handle
         --> take down Cancel Dialog (does nothing if not still up, takes down and wakes main thread if still up)
    THE PROBLEM: Worker thread's job involves doing IO, and it may need to instantiate a new Socket. If it is attempting to instantiate Socket with bad arguments, it can get stuck... The port int is hardcoded by the program, but the IPAddress must be typed by user.
    If the arguments to Socket(InetAddress, int) constructor contain a valid-but-not-in-use IP address, the worker thread will get stuck in the Socket constructor for a LONG time (I observed 1m:38s). There is nothing the Main thread can do to stop this wait?
    EVEN WORSE: If the user clicks the Cancel Button during this time, the dialog goes away soon/immediately, but then the GUI appears to be hanging (single-threaded look) until the long wait is over (after which the "Cancelled..." info is displayed).
    MY QUESTION: Is there nothing the Main thread can do to stop this wait?
    Your answers will be sincerely appreciated. Despite my hopeless attitude (see above), the folks at this forum really have yet to let me down ...
    /Mel

    http://developer.java.sun.com/developer/technicalArticles/Networking/timeouts/

  • XML Publisher Desktop Db connect SQL Server Host:Port:Sid

    Brand new to XML Publisher. Set up XML Publisher Enterprise environment to work with SQL Server 2005 using both MS 2000 & 2005 JDBC drivers, so far no problem.
    However the XML Publisher Desktop Report Wizard will not connect to SQL Server 2005 using either MS 2000 & 2005 JDBC drivers. I provide the same data source name, user and pw that I use in the XML Publisher Enterprise environment but it is the 4th piece of information - the database portion (Host:Port:Sid) that I am having trouble with. SID is an Oracle invention not used in the SQL Server world. I have tried various combinations of the database string without sucess.
    Perhaps the XML Publisher Desktop does not work with SQL Server. Does anyone know how to use XML Publisher Desktop to create templates that will work with MS SQL Server?
    Thank you.
    BG...

    Shaun,
    Thanks for you comments. I belive I now have enough to use the HSGC-ODBC technique to make the template and then re-edit it to make it work with the original JDBC connection.
    That said, "Using ODBC-JDBC bridge connection is really poor in performance." I, more than anyone on the planet am aware of this issue and more.
    Being new to XMLPublisher I thought that having a JDBC connection to a SQL Server from XMLP Enterprise led me to beleive that the XMLP Desktop template creation tool would also work. "*** Pity the fool ***" for thinking that! (Thank-you Mr. T!!! <grin>).
    Because I had to engage a 'heterogeneous connectivity" solution to this problem indicates that the product is half-baked. That's not to say that it is not capable.
    Rushing software products to market quickly creates products that make the rest of us jump through hoops. I resent that!!! I have more import things to do than waste time!
    I demand more of a trusted vendor, do you? I have tortured myself with Oracle products thinking they were ready since the early nineties.
    Look we are in a "heterogeneous universe" and if the product pretends to work with "heterogeneous databases" on the Enterprise side than it damn well aught to work with them on the Desktop side. That's my opinion.
    Attention OTN: I am back!!!
    Justin, this needs to be fixed.
    Thanks!
    BG...

  • How to use a Socket with an IP adress.

    Hi,
    I have made a simple client/server app using sockets and streams. I can make a ServerSocket on a port and then connect a client using the following Socket constructor:
    Socket(hostname, port)
    This works fine when I know the computer name I am connecting to, but what if I want to connect to a remote computer using an IP address of the form 127.0.0.1 (obviously not this address if the computer is remote) and a port number ?
    I have found the InetAddress class but I don't think I can use this class to represent/format a local remote address and Socket contructors want a InetAddress to specify an IP adress.
    Any help would be appreciated.

    Actually InetAddress constructor is hidden andcan't
    be used in anyway that I know.You're right. My mistake. Um, that can't be true. InetAddress (JDK 1.5) is a public class with static constructors based on the return of a method.
    InetAddress address = InetAddress.getByName("127.0.0.1");
    or
    InetAddress address = InetAddress.getByName("localhost");
    These will return an InetAddress object which may then be used in the socket constructor.
    Socket socket = new Socket(address, int portNumber);

  • Referrals without host:port in LDAP url

    Hi,
    I have a data tree I want to replicate. The only way I can do it is to chop the tree out into different branches but I would like to keep a virtual tree for the applications that are currently working against my directory.
    I've created some new databases and some smart referalls like
    ref: ldap:///ou=newobjects,o=objects
    The problem is that it seems the ldap_search_s function can't follow this referrals without host:port (ldapsearch tool in Linux follows the referrals properly but using the C++ API it doesn't work). Is there anyway to create the referral without references to host:port, I mean to make the referral point to the another entry at the same server instance and to get the same behaviour in any server.
    Thanks in advance
    Jorge Ortiz

    I have some information for you. Please post this question at secnews.netscape.com:netscape.server.directory for a follow up

  • New Socket("IP" , 4444)

    I wrote a simple chat program, using Sockets, now on my Client program when I create the new Socket I run into errors...
    First of I must let you know that I am on a wireless connection set up in my house, therefore I am not directly connected to the internet, and I belive I have 2 ip adresses, one is assigned by my router and the other one is my TRUE internet IP...
    Now if I sent this client program to a friend and I still had my router IP in the source file, it didnt work, of course not so I told him to change it to my TRUE internet IP, which he did and now it worsk just fine....
    so now i continue developing, and ofcourse I change the IP to my TRUE internet IP, but now the Client program cannot connect the server if they run on the same mashine...
    There fore I need my router adress when i run both (Server and Client) programs on my pc, however I need the other IP when I sent the file to a far away friend....
    My question is WHY????
    thanks alot guys

    If I understood you correctly:
    a.) You have created a client program to connect to a server on your system
    b.) You have a router/firewall and a local area network, probably 192.168.1.XXX.
    c.) The client program connects to the DHCP obtained wireless network address for your local
    area network, and works internally--- but you for some reason must use the IP address of your router in order to access the server via an external source.
    As far as I can tell, this isn't normal behavior, so something isn't quite correct about how you believe everything is working.
    Lets say, for instance, your IP address was 192.168.1.100 for your local area network.
    To the LAN, your router is a completely different machine, there are internal to it settings by which you can set up port forwarding. When somebody connects to it from a WAN, usually there will be a table of IP addresses of computers on the local area network associated with a particular port.
    Basically, "If the firewall/router gets a packet for port 4444, then forward it to 192.168.1.100 on port 4444."
    What I find strange is, unless this port forwarding has been set up, your friend should not be able to connect to your server program by proxy through your router.
    If you have this proxy connection set up, essentially what will happen internally to the firewall is:
    a.) Your computer will forge a packet for the desired WAN IP address (The IP of your router), and fork it off onto the network.
    b.) The router will obtain the packet, realize the WAN network address is its own, and it will then check its routing tables for the specific port 4444 and find your local area network address associated with it.
    c.) It should finally send that packet back to your machine on port 4444.
    I really would need more information about what exactly is going on to determine what is happening.
    -Jason Thomas.

  • Can a USB Keyboard/Barcode reader be used with the USB port on the CRio

    Is it possible to use a USB Keyboard or Barcode reader with the USB port on the CRio, I know you can use this port with a USB memory device, but what about other devices?
    I have a project that requires that all hardware elements be connected to the controller and use the HMI purely for display,
    anybody any ideas?? 

    Hi kmoyna,
    The standard CompactRIO range's USB host ports are not suitable for standard USB devices like keyboards or barcode readers - they are intended only for use of mass storage devices. From your description, it seems your project's requirements would be best met by the newer models, cRIO-9081 or cRIO-9082. These two units have Windows Embedded Standard 7 (WES7) and allow the direct connection of a monitor and standard USB devices. We now also have similar stand-alone CompactDAQ models running WES7 - cDAQ 9139.
    I would recommend calling into your local branch to discuss your project further with one of our engineers. If you're in the UK, it's 01635 523 545 - or view contact details for other branches.
    Regards,
    Imtiaz Chowdhury
    Head of Digital Technologies
    Brand786

  • Filemaker Pro 11 - some useful new features

    Just upgraded from Filemaker Pro 9 to 11. There are some useful new features listed at: http://www.filemaker.com.au/products/filemaker-pro/whats-new.html
    At last I will be able to generate charts from datasets, without needing an add-on.
    I have been using the ancient DOS software Open Access (no relation to MS Access) for charting relational SQL databases since 1987. I still use Open Access within DOSBOX for OS X for some complex data processing tasks. Tips at
    http://users.tpg.com.au/aoaug/mac_vpc.html

    I am not an expert in Filemaker But I have been playing with it quite a bit recently. It sounds like you have opened some of the ports required but not all. All IWP is a webpage that is hosted (by the sounds of it) on your local machine you will need to make sure all required ports are open like port 80 for http. I would start by setting the default host on the airport using the airport utility.
    You will want to set this as the ip for the computer that has filemaker on it.
    Airport Utility > Network > Network Options
    You may also want to make sure you reserve this ip in the DHCP reservations section.
    If the IWP page works with this set up then you can work your way backwards opening the required ports ( have a look at this http://help.filemaker.com/app/answers/detail/a_id/6427/~/filemaker-server-and-fi lemaker-server-advanced-port-numbers )
    I had lots of problems with IWP but installing the server add on sorted this. The advantage to this is that the server add on configures your airport to use the machine as a server.
    Dropbox, log me in, back to my mac are slightly different from what you are doing. They are apps which are open and communicating with their respective servers. When you want to host a web site or even just VNC into a mchine you have to have the ports set to forward accordingly, this is because an outside machine is attempting to initiate the contact. This is what the firewalls and security that comes with modern routers are designed to prevent.
    I hope I have helped, I can see your question is quite old.  I saw your topic whilst looking to solve a problem my own.

Maybe you are looking for