Added a form of client that allows delayed connection
using the standard network stack. git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7015 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
		
							parent
							
								
									6718c7d892
								
							
						
					
					
						commit
						24b65c4914
					
				| @ -66,6 +66,14 @@ public class Network | |||||||
|         return new DefaultServer( reliable, fast );        |         return new DefaultServer( reliable, fast );        | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      *  Creates a client that can be connected at a later time. | ||||||
|  |      */ | ||||||
|  |     public static NetworkClient createClient() | ||||||
|  |     { | ||||||
|  |         return new NetworkClientImpl(); | ||||||
|  |     }      | ||||||
|  |      | ||||||
|     /** |     /** | ||||||
|      *  Creates a Client that communicates with the specified host and port |      *  Creates a Client that communicates with the specified host and port | ||||||
|      *  using both reliable and fast transports.  The localUdpPort specifies the |      *  using both reliable and fast transports.  The localUdpPort specifies the | ||||||
| @ -73,7 +81,18 @@ public class Network | |||||||
|      */    |      */    | ||||||
|     public static Client connectToServer( String host, int hostPort, int localUdpPort ) throws IOException |     public static Client connectToServer( String host, int hostPort, int localUdpPort ) throws IOException | ||||||
|     { |     { | ||||||
|         return connectToServer( InetAddress.getByName(host), hostPort, localUdpPort );    |         return connectToServer( InetAddress.getByName(host), hostPort, hostPort, localUdpPort );    | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      *  Creates a Client that communicates with the specified host and port | ||||||
|  |      *  using both reliable and fast transports.  The localUdpPort specifies the | ||||||
|  |      *  local port to use for listening for incoming 'fast' UDP messages. | ||||||
|  |      */    | ||||||
|  |     public static Client connectToServer( String host, int hostPort, int remoteUdpPort,  | ||||||
|  |                                           int localUdpPort ) throws IOException | ||||||
|  |     { | ||||||
|  |         return connectToServer( InetAddress.getByName(host), hostPort, remoteUdpPort, localUdpPort );    | ||||||
|     } |     } | ||||||
|   |   | ||||||
|     /** |     /** | ||||||
| @ -82,6 +101,17 @@ public class Network | |||||||
|      *  local port to use for listening for incoming 'fast' messages. |      *  local port to use for listening for incoming 'fast' messages. | ||||||
|      */    |      */    | ||||||
|     public static Client connectToServer( InetAddress address, int port, int localUdpPort ) throws IOException |     public static Client connectToServer( InetAddress address, int port, int localUdpPort ) throws IOException | ||||||
|  |     { | ||||||
|  |         return connectToServer( address, port, port, localUdpPort ); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     /** | ||||||
|  |      *  Creates a Client that communicates with the specified address and port | ||||||
|  |      *  using both reliable and fast transports.  The localUdpPort specifies the | ||||||
|  |      *  local port to use for listening for incoming 'fast' messages. | ||||||
|  |      */    | ||||||
|  |     public static Client connectToServer( InetAddress address, int port, int remoteUdpPort,  | ||||||
|  |                                           int localUdpPort ) throws IOException | ||||||
|     { |     { | ||||||
|         InetAddress local = InetAddress.getLocalHost(); |         InetAddress local = InetAddress.getLocalHost(); | ||||||
|         UdpConnector fast = new UdpConnector( local, localUdpPort, address, port );  |         UdpConnector fast = new UdpConnector( local, localUdpPort, address, port );  | ||||||
| @ -89,4 +119,27 @@ public class Network | |||||||
|         |         | ||||||
|         return new DefaultClient( reliable, fast ); |         return new DefaultClient( reliable, fast ); | ||||||
|     } |     } | ||||||
|  |   | ||||||
|  |     protected static class NetworkClientImpl extends DefaultClient implements NetworkClient | ||||||
|  |     { | ||||||
|  |         public NetworkClientImpl() | ||||||
|  |         { | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         public void connectToServer( String host, int port, int remoteUdpPort,  | ||||||
|  |                                      int localUdpPort ) throws IOException | ||||||
|  |         { | ||||||
|  |             connectToServer( InetAddress.getByName(host), port, remoteUdpPort, localUdpPort ); | ||||||
|  |         }                                      | ||||||
|  |                                   | ||||||
|  |         public void connectToServer( InetAddress address, int port, int remoteUdpPort,  | ||||||
|  |                                      int localUdpPort ) throws IOException | ||||||
|  |         { | ||||||
|  |             InetAddress local = InetAddress.getLocalHost(); | ||||||
|  |             UdpConnector fast = new UdpConnector( local, localUdpPort, address, port );  | ||||||
|  |             SocketConnector reliable = new SocketConnector( address, port );         | ||||||
|  |              | ||||||
|  |             setConnectors( reliable, fast ); | ||||||
|  |         }                                              | ||||||
|  |     }    | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										55
									
								
								engine/src/networking/com/jme3/network/NetworkClient.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								engine/src/networking/com/jme3/network/NetworkClient.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2011 jMonkeyEngine | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions are | ||||||
|  |  * met: | ||||||
|  |  * | ||||||
|  |  * * Redistributions of source code must retain the above copyright | ||||||
|  |  *   notice, this list of conditions and the following disclaimer. | ||||||
|  |  * | ||||||
|  |  * * Redistributions in binary form must reproduce the above copyright | ||||||
|  |  *   notice, this list of conditions and the following disclaimer in the | ||||||
|  |  *   documentation and/or other materials provided with the distribution. | ||||||
|  |  * | ||||||
|  |  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors | ||||||
|  |  *   may be used to endorse or promote products derived from this software | ||||||
|  |  *   without specific prior written permission. | ||||||
|  |  * | ||||||
|  |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||||
|  |  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||||||
|  |  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||||
|  |  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | ||||||
|  |  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||||
|  |  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||||
|  |  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||||||
|  |  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||||||
|  |  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||||
|  |  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||||
|  |  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package com.jme3.network; | ||||||
|  | 
 | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.net.InetAddress; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  *  A Client whose network connection information can  | ||||||
|  |  *  be provided post-creation.  The actual connection stack | ||||||
|  |  *  will be setup the same as if Network.connectToServer | ||||||
|  |  *  had been called.   | ||||||
|  |  * | ||||||
|  |  *  @version   $Revision$ | ||||||
|  |  *  @author    Paul Speed | ||||||
|  |  */ | ||||||
|  | public interface NetworkClient extends Client | ||||||
|  | { | ||||||
|  |     public void connectToServer( String host, int port, int remoteUdpPort,  | ||||||
|  |                                  int localUdpPort ) throws IOException; | ||||||
|  |                                   | ||||||
|  |     public void connectToServer( InetAddress address, int port, int remoteUdpPort,  | ||||||
|  |                                  int localUdpPort ) throws IOException; | ||||||
|  |      | ||||||
|  | } | ||||||
| @ -65,8 +65,22 @@ public class DefaultClient implements Client | |||||||
|     private ConnectorAdapter reliableAdapter;     |     private ConnectorAdapter reliableAdapter;     | ||||||
|     private ConnectorAdapter fastAdapter;     |     private ConnectorAdapter fastAdapter;     | ||||||
|      |      | ||||||
|  |     public DefaultClient() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |      | ||||||
|     public DefaultClient( Connector reliable, Connector fast ) |     public DefaultClient( Connector reliable, Connector fast ) | ||||||
|     { |     { | ||||||
|  |         setConnectors( reliable, fast ); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected void setConnectors( Connector reliable, Connector fast ) | ||||||
|  |     { | ||||||
|  |         if( reliable == null ) | ||||||
|  |             throw new IllegalArgumentException( "The reliable connector cannot be null." );             | ||||||
|  |         if( isRunning ) | ||||||
|  |             throw new IllegalStateException( "Client is already started." ); | ||||||
|  |              | ||||||
|         this.reliable = reliable; |         this.reliable = reliable; | ||||||
|         this.fast = fast; |         this.fast = fast; | ||||||
|         if( reliable != null ) { |         if( reliable != null ) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user