Server with multiple clients

Hey all,
I'm working on a simple Snake-like Java game - I'm done with the basics but I want to add in multiplayer capabilities. The game is not very complicated (hence I'm not posting on the game forum), but I have very little experience with network programming. I do know threading and GUI/Java2D stuff fairly well so that will be less of a problem. As far as the game itself goes, I want everybody to be able to see what everyone else is doing.
As for the networking, basically what I want to do is as follows:
1. One person runs the program and hits the "start server" button. This displays his IP and creates 7 new mini-screens for the other players. This also starts the server thread. (All of this is done already).
2. The server thread will do a few things: 1) It will "listen" to any incoming connection requests and connect them to the server. 2) It will accept UDP datagram packets from the connected clients. It will process these and send the information to all the other clients. 3) It will monitor the state of the game and notify the clients about events like a player losing, the game ending, someone disconnecting.
3. A client thread will be spawned in a program that connects to the server. The client thread will 1) send the server updated information on its state at set intervals. 2) Receive information from the server on the other clients at intervals.
Obviously there is a whole lot more to consider, with special cases like someone disconnecting, the server crashing, etc. For right now, though, I just want to get the basics up.
I've read through the Networking tutorials on this site, but I'm having trouble with a few design/technical issues even after looking through them.
1. At a basic level, should I really be using UDP here? It seems like the better choice for fast games.
2. Should I be using the MulticastSocket class? It seemed right initally but I got the impression that all clients I broadcast to would have to be in the same IP range, which is not the case here (I want Internet games to be possible).
3. I'm not sure what I should be sending back and forth. From reading the tutorials my impression is that you can only send 256-long byte arrays in each packet. Does this mean I have to arbitrarily assign each byte in this array a meaning in the program? What if I have more than 256 bytes of info. to send?
4. My basic idea was for the server to spawn and fork a thread for each of the connected clients, and for each client to spawn and fork a thread for all the other players in the game so that if someone crashes, disconnects, leaves, etc. only the thread responsible for displaying/updating their part stops. Is this the ideal setup? Is there a better way to handle this type of network model?
5. The client/server need to be monitoring a few different things - should I just combine all this information into one big packet or separate it?
Sorry for the long post, but I'm somewhat confused on what to do here.
Thanks for the help!

Thanks for the quick reply - I'll change around my design to use what you suggested. On a related note, how much slower, empirically, is TCP compared to UDP? For this application I need ping times between 300 and 500 ms for each of the clients.
Also, regarding transferring information via TCP - since this is done with Buffered Read/writers can I transfer more back and forth? Basically I need to send the score (an int), as well as positional information for each player (could be as big as 50-100 ints). I'm worried that sending this volume of information is going to slow everything down quite a bit since not everyone has broadband. If I really have to be sending hundreds of ints a couple times a second to everyone, should I figure out a better way to do this? As long as each person's connection is at least 14k or so it should be ok, but it will also monopolize most of the bandwidth (at least with dialup connections).

Similar Messages

  • How to control one server with multiple clients via TCP/IP

    I am wanting to control a single server with multiple clients.  Only one client would be active at a time, so there would be no conflict.  I want to use TCP/IP.  So far, I have programmed a cluster that passes data back to the server with no problems.  The challenge come in when a second client is added to the mix.  I have't been able to figure out how to turn each client on and send the appropriate data and then turn it off so it doesn't keep sending the same data to the server. 
    Here are the things that I have considered and did some preliminary testing, but don't really know how to impliment:
    1.  Send a numeric on the front of the cluster packet that tells the server that data is on the way.
    2.  Send a boolean on the front of the cluster packet to somehow turn the server TCP/IP on.
    The problem I have found is that LabVIEW TCP/IP doesn't like to be turned on and off.  If it doesn't get the data it expects, it goes into a reset mode and that kills the response time.
    Any help?

    You should consider implementing a set of simple one-byte commands that can be sent back and forth between the Server and the Clients. You can base all of these ideas off the example in the Example Finder under Networking >> TCP and UDP called Multiple Connections - Server.
    You will have two loops in the server VI: one to wait for new connections, and one to send and receive data from the existing connections. For instance, after one of the clients connects, it can request control of the server to send data to it by sending the character "R" for request. Every time the send/receive loop of the Server executes, the first thing it can do is to check all the existing connections to see if any of the clients have sent a control request ("R"). If so, it will create a buffer (array) of control requests. This could be in the form of Connection IDs or indexes in the array for a particular Connection ID. Your choice.
    After the Server receives a request for contol, if it is not already under control by another client, then it can send a response to the first client on the control request list. For instance, the server could send the first client a "S" command for send. Note that after the clients send their control request, they should execute a TCP Read and wait indefinitely for the server to respond with the one-byte "S" command. Then, once the client in control is finished sending data to the server, it could send the character "X" telling the Server to release it from control.
    The example I mentioned above already does a similar thing. Note how when a client wants to disconnect, they send the letter "Q". You can see this in the Multiple Connections - Client VI. The Server then checks each individual connection to see if it's received this one-byte command, and if it has, it closes the connection to the client. This is what you would want to implement, but instead of having just one command, you'll have to distinguish between a few and build up a buffer of control requests.
    Finally, if a client does decide to disconnect in your application, they could send the command "Q" just like the example above. At this point, close the connection and remove that Connection ID from the array of connections. You will also have to handle the case that this client was in the request control waiting line when it disconnected, in which case you need to delete it from that array as well.
    This will definitely work for you, but it will take some work. Best of luck!
    Jarrod S.
    National Instruments

  • How does create a server with multiple Clients ?

    Any people can lead me .
    How does create a server with multiple Clients ?
    Thanks

    For a multithreaded server you will need a thread to listen and at least one thread per client. If the conversation is half duplex, one thread per client works very well, if it's full duplex you will find one thread to send and one to receive much easier to program.
    I posted a Simple Socket Server that uses 1+2*clients threads.

  • With the new Time Capsule does the beam forming occur with multiple clients, and do these clients have to be 802.11ac compatible?

    With the new Time Capsule 5th Gen does the beam forming occur with multiple clients, and do these clients have to be 802.11ac compatible?

    does the beam forming occur with multiple clients
    Yes, but Apple is unclear about how many cients can be connected simultaneously with this feature.
    do these clients have to be 802.11ac compatible?
    Yes

  • Sql server with multiple instance

    hi  All,
    i want  to  install sql server with two instance   and i want  to assign two  separate is  ips   for  both   default instance  and named  instance   and  both   should  work like
    two different server
    note:  If i  logged  with  one  ip(default instance)   it should  show  its  own  databases  not both or  named   instance  databases
    thanks 
     chintala

    Hi chintala,
    According to your description, if you want to assign the two different IP to stand for default instance 
    and named  instance, I recommend you set up aliases on a SQL Server with multiple instances. For example, a physical server is named WinServer and 2 instances of SQL Server named WinServer and WinServer\instance1.
    We need to add 1 IP addresse to the WinServer, there is one IP address already assigned to WinServer, 192.168.1.1, by adding one new IP's, 192.168.1.2 .
    We need to move into DNS to configure our host names and aliases.  The physical machine must be steup as a static IP in DNS. SQLAlias1, which point to the default instance on WinServer, will be setup as a DNS with an address of 192.168.1.1.
    SQLAlias2, which will point to WinServer\Instance1, will be setup as a new Host (A) record in DNS with an address of 192.168.1.2.
    When everything has been completed on the DNS side, you need to open up SQL Server Configuration Manager on WinServer and configure the protocols for each instance one at a time, restart the 3 SQL services.
    For more information about how to set up aliases on a SQL Server with multiple instances, you can review the similar article.
    http://kevine323.blogspot.com/2013/08/setting-up-aliases-on-sql-server-with.html
    Regards,
    Sofiya Li
    Sofiya Li
    TechNet Community Support

  • Issue listeneing queue from Weblogic Cluster server with multiple managed server

    Haveing issue listeneing queue from Weblogic Cluster server with multiple managed server.
    Weblogic Cluster structure is like
    Weblogic Cluster01
      --ManagedServer01(http://server01.myhost.com:7001)
      --ManagedServer02(http://server02.myhost.com:7001)
    JMS Servers
      JMSserver01 targeting: ManagedServer01
      JMSserver02 targeting: ManagedServer02
      JMSmodule
      ConnectionFactory01 targeting:JMSserver01,JMSserver02
      UDQueue01 targeting:JMSserver01,JMSserver02
    Uniform Distributed Queue in Monitoring tab showing like this
      mysystemmodule!JMSserver01@UDQueue01
      mysystemmodule!JMSserver02@UDQueue01
    So when I am sending message to any Host(by specifying the provider URL) its distributing equally on both server like
      mysystemmodule!JMSserver01@UDQueue01 10
      mysystemmodule!JMSserver02@UDQueue01 10
    But when try to listen message from these queue, it is listening from one server, for which URL given to connect.
      mysystemmodule!JMSserver01@UDQueue01 0
      mysystemmodule!JMSserver02@UDQueue01 10
    untill I connect to other server by giveing its URL, will not able to access other message left on the queue.
    Solutions that tried
      1) we have tried give both server URL coma sparated in provider URL
    we need to configur same scenario for 5 managed server with 3 listener on other servers.
    Do any one have solution for this.

    You need to have:
    1. Consumers connected to each UDQ member
    OR
    2. If no consumers in some of the members is expected, you can configure Forward Delay (specify the amount of time, in seconds, that a queue member with messages, but with no consumers, will wait before forwarding its messages to other queue members that do have consumers):
    http://docs.oracle.com/cd/E12839_01/apirefs.1111/e13952/taskhelp/jms_modules/distributed_queues/ConfigureUDQGeneral.html
    For example you can set it to 10 (10s)
    Additional Information here:
    http://docs.oracle.com/cd/E23943_01/web.1111/e13727/dds.htm#i1314228
    http://docs.oracle.com/cd/E23943_01/apirefs.1111/e13951/mbeans/DistributedQueueBean.html?skipReload=true#ForwardDelay
    How Does JMS Load Balancing Work with Distributed Queues and Uniform Distributed Queues? (Doc ID 827294.1)
    I hope this helps
    Best Regards
    Luz

  • WOL question. SCCM server with multiple nics.

    Hi,
    I have a sccm server with multiple nics, I can wake up any machine using a 3ed party magic packet utility, if I set a schedule and use sccm wol functionally the machine never wakes up. As I pointed out my server has multiple nics, does anyone have a sccm
    server with multiple nics with sccm built in wol functionally working?. I am curious on how you achieved this.

    Hey Garth,
    Yes the problem is solved but we had to buy a 3rd party power management utility to accomplish WOL. Because we have many different subnets in our environment we found that this was the fastest way to get WOL working,
    So out of the box SCCM would not work for us, with a 3rd party utility that had an SCCM plugin WOL now works flawlessly.

  • Logins being denied on 10.4.11 Server with unlimited clients.

    I have a eMac running 10.4.11 Server with unlimited clients. This server is throwing people off the shares or denying them access, reporting that the number of shares has been exceeded despite it being an unlimited licence product. The licence information confirms that it is an unlimited licence. Restarting the server will remedy the problem for a while but is obviously impracticable. Can anyone please give me some help to remedy this problem?
    Thanks, Rob

    I am having a similar problem.
    I just updated clients to Leopard.
    Xserve is still running Tiger.
    Now clients cannot search files on the server.
    Apple support said Tiger clients used "cat search" instead of spotlight.
    Now that clients are Leopard, clients try to search with spotlight,
    but Tiger Server cannot search with spotlight.
    He suggested looking for a 3rd party cat search for Leopard clients.
    Any suggestions?

  • Anyone have a fully functioning thread server ? (any server with the client

    Anyone have a fully functioning thread server ? (any server with the client source code) ? can u share it to me ? please ? I'm very hard to find a fully functinal example....
    thx ........

    Why not just write one yourself, it's not that hard. If you can't, then maybe you should learn how to write one before you try to use one.

  • Drop insert in receiver system with multiple clients

    Hello,
    does TDMS handle drop-insert technology in a multiple client receiver system automatically?
    What can be the impact for the other clients when they are working while data deletion in the
    receiver client?
    Regards Karlheinz

    Hello Karlheinz,
    Good, question is straight and clear now.
    please refer to steps mentioned in oss note 1433553 to make sure that TDMS should not consider drop_insert in TDMS migration.
    Regards,
    Amit Sharma
    Solution
    You have the possibility to set a Global Parameter for setting the deletion
    scenario to overall array delete. In the following a description of the
    proceeding.
    Check if the global parameter GLOBAL_NO_DROP_INSERT exists
    and that it is set to 'X' in the receiver system.
    Call the Migration Server Overview(tcode cnv_mbt_tdms).
    Expand the tree until you get your package.
    Mark the package number so that it is highlighted.
    In the menu click on Goto->Global Parameter.
    When you have correctly positioned your cursor on a package number you
    will see in the application toolbar buttons named with the exection targets,
    system name and client number. You can also see if a connection to the listed
    system is working (checkmark) or not (lightning).
    Click on the button
    'RECEIVER' to get the global parameters from the receiver system. This is where
    the Global Parameter has to be set.
    The global parameter entries will be
    delivered empty and for the parameter you want to use you have to set the value.
    An initial global parameter has no value in the column 'Client'.
    Mark the row with the global parameter
    'GLOBAL_NO_DROP_INSERT'.
    Press button copy text (third button).
    In the menu bar click on the drop-down box of the insert button and choose
    the item 'Insert in new row' in the selection list (forth button from
    left).
    In column 'Client' enter the client where you want to use the overall
    scenario array-delete. If you enter the value 'ALL' then the setting is valid
    for all clients in the system.
    In the column 'Parameter Value (from)' enter the value 'X'.
    Save your settings.
    If the parameter already exist you have to check whether the correct
    client is set. If the column 'Client' includes the deletion client or the value
    'ALL' then no further settings are required. Otherwise you have to copy the
    Global Parameter as previously described and change the value in the column
    'Client' with your deletion client. Take care that the value in column
    'Parameter Value (from)' is 'X'.
    From now on the generation of deletion
    programs will use this information to create the deletion programs with deletion
    scenario ARRAY-DELETE.

  • RAS Server allowing multiple clients in and telnet redirection to correct reciever.

    Product being used:
    IOS (tm) 3700 Software (C3725-ADVIPSERVICESK9-M), Version 12.3(26), RELEASE SOFTWARE (fc2)
    cisco 3725 (R7000) processor (revision 0.1) with 118784K/12288K bytes of memory.
    R7000 CPU at 240MHz, Implementation 39, Rev 3.3, 256KB L2 Cache
    MICA-6DM Firmware: CP ver 2940 - 7/24/2002, SP ver 2940 - 7/24/2002.
    Bridging software.
    X.25 software, Version 3.0.0.
    Primary Rate ISDN software, Version 1.1.
    2 FastEthernet/IEEE 802.3 interface(s)
    24 Serial network interface(s)
    24 terminal line(s)
    1 Channelized T1/PRI port(s)
    In combination with a server running:
    tac_plus version F4.0.3.alpha.v9 (Extended Tac_plus)
    • The goal is create a RAS Server to allow multiple clients to call in and separate them via DNIS.
    Then specify an auto-command to send the traffic to the correct receiver of that call.
    We are not stuck on doing this with tacacs if there is a more efficient way of doing this.
    The thought was to only send the authorization to tacacs to allow for the dnis map to point the traffic to the correct receiver.
    aaa authentication login DIALIN none
    aaa authorization exec DIALIN none
    • If we set aaa authentication login DIALIN none it works without any issues but does not go to the tacacs server and therefore does not allow us to use the dnis map commands.
    aaa authentication login DIALIN group AAA-mydial
    aaa authorization exec DIALIN none
    • If we set aaa authentication login DIALIN group AAA-mydial using the aaa group server tacacs+ AAA-mydial it goes out to the tacacs server as expected but then it requires a login ID at least in order to get into a session.
    aaa authentication login DIALIN none
    aaa authorization exec DIALIN group AAA-mydial
    • When we change the aaa authorization exec DIALIN group AAA-mydial it fails and does not even send the information out to the tacacs server.
    aaa authentication login DIALIN “see above for options “
    aaa authorization exec DIALIN “see above for options”
    aaa new-model
    aaa group server tacacs+ AAA-2035554677
    server 172.16.0.109
    aaa group server tacacs+ AAA-2035554570
    server 172.16.0.109
    aaa group server tacacs+ AAA-2035554571
    server 172.16.0.109
    aaa group server tacacs+ AAA-mydial
    server 172.16.0.109
    aaa authentication login DIALIN none
    aaa accounting exec default start-stop group AAA-2035554570
    aaa dnis map enable
    aaa dnis map 2035554677 authorization network group AAA-2035554677
    aaa dnis map 2035554677 accounting network start-stop group AAA-2035554677
    aaa dnis map 2035554570 authentication login group AAA-2035554570
    aaa dnis map 2035554570 authorization network group AAA-2035554570
    aaa dnis map 2035554570 accounting network start-stop group AAA-203554570
    aaa dnis map 2035554571 authorization network group AAA-2035554571
    aaa dnis map 2035554571 accounting network start-stop group AAA-2035554571
    aaa session-id common
    ip subnet-zero
    ip cef
    line con 0
    line 65 88
    no motd-banner
    no exec-banner
    privilege level 15
    no vacant-message
    login authentication DIALIN
    modem Dialin
    transport preferred none
    transport output telnet
    escape-character NONE
    telnet transparent
    line aux 0
    line vty 0
    exec-timeout 0 0
    password cisco
    line vty 1
    exec-timeout 0 0
    transport preferred telnet
    transport input all

    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:"Table Normal";
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-qformat:yes;
    mso-style-parent:"";
    mso-padding-alt:0in 5.4pt 0in 5.4pt;
    mso-para-margin:0in;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:"Times New Roman";
    mso-fareast-theme-font:minor-fareast;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;}
    NOTHING LIKE ANSWERING YOUR OWN POST:::
    --Well after looking around I found the following on a forum which seems to have gotten us to our destination but uses local authentication to direct the DNIS numbers to the correct receiving system.  Just need to give things a final polishing to make the configuration as clean as possible.
    hostname Router
    boot-start-marker
    boot-end-marker
    logging buffered 65536 debugging
    enable password cisco
    clock timezone EDT -5
    clock summer-time EDT recurring
    aaa new-model
    aaa user profile TEST
    aaa group server tacacs+ AAA-mydial
    server 172.16.0.109
    !!!!!  Below defines the AAA-mydial group you are sending the accounting information to.
    aaa group server radius AAA-myradius
    server 172.16.0.109 auth-port 1645 acct-port 1646
    !!!!!  Below you are using the DNISTEST local group for authentication and authorization.
    aaa authentication banner ^C^C
    aaa authentication login DNISTEST local
    aaa authorization exec DNISTEST local
    aaa accounting update newinfo
    aaa accounting connection DNISTEST start-stop group tacacs+ group AAA-mydial
    aaa session-id common
    ip subnet-zero
    ip cef
    ip audit po max-events 100
    isdn switch-type primary-ni
    isdn voice-call-failure 0
    isdn logging
    !!!!!  Below you are directing which DNIS number goes to which receiving host.
    username cisco-kid password 0 cisco
    username DNIS##1212 nopassword dnis
    username DNIS##1212 autocommand telnet 172.16.0.5 22 /stream /quiet
    username DNIS##4677 nopassword dnis
    username DNIS##4677 autocommand telnet 172.16.0.6 22 /stream /quiet
    username DNIS##4570 nopassword dnis
    username DNIS##4570 autocommand telnet 172.16.0.7 22 /stream /quiet
    controller T1 1/0
    framing esf
    linecode b8zs
    pri-group timeslots 1-24
    interface FastEthernet0/0
    ip address 172.16.0.35 255.255.255.0
    speed auto
    full-duplex
    interface FastEthernet0/1
    no ip address
    shutdown
    duplex auto
    speed auto
    interface Serial1/0:23
    no ip address
    encapsulation hdlc
    isdn switch-type primary-ni
    isdn incoming-voice modem
    no cdp enable
    interface Group-Async0
    no ip address
    encapsulation slip
    dialer in-band
    dialer-group 1
    async mode interactive
    group-range 65 88
    interface Dialer0
    no ip address
    dialer in-band
    dialer idle-timeout 3600
    dialer-group 1
    ip classless
    ip route 0.0.0.0 0.0.0.0 172.16.0.254
    no ip http server
    no ip http secure-server
    ip tacacs source-interface FastEthernet0/0
    dialer-list 1 protocol ip permit
    !!!!!  Below you are further defining the tacacs server and the encryption key to be used.
    tacacs-server host 172.16.0.109 key cisco
    no tacacs-server directed-request
    radius-server host 172.16.0.109 auth-port 1645 acct-port 1646 key ras-secret123
    line con 0
    !!!!!  Below you are directing all calls to go to DNISTEST for authentication, authorization, & accounting.
    !!!!!  Then we are stripping all prompting so that the connection is completely clean.
    !!!!!  The only issue was that the aaa banner was still there which is why there is a
    !!!!!  “aaa authentication  banner ^C^C” above in the aaa section.
    line 65 88
    no motd-banner
    no exec-banner
    privilege level 15
    authorization exec DNISTEST
    accounting connection DNISTEST
    no vacant-message
    login authentication DNISTEST
    modem Dialin
    transport preferred none
    transport output telnet
    escape-character NONE
    telnet transparent
    line aux 0
    line vty 0 4
    exec-timeout 0 0
    password cisco
    transport preferred telnet
    transport input all
    transport output all
    escape-character NONE
    telnet transparent
    end
    tacacs+ config just needs to have an accounting log file defined and all output will be logged there:
    Here is my tac_plus.cfg file:
    ===========================================================
    key = "cisco"
    accounting file = /var/log/tac_plus-f404.log
    -----------------------  the info below this line is irrelevant  ---------------------------
    ---  Just from me trying to use tacacs for the authentication & authroization----
    user = default {
            login = nopassword
            service = exec {
                   autocmd = "telnet 172.16.0.5 22 /stream /quiet"
    user = Router {
            login = nopassword
            member = dialup
    group = dialup {
            default service = permit
            expires = "Apr 1 2010"
            service = exec {
                    idletime = 15
                    autocmd = "telnet 172.16.0.5 22 /stream /quiet"
            cmd = disconnect {
                    permit .*
    user = test {
            name = "Dial"
            login = nopassword
            member = dialup

  • Help needed in running the RMI application with multiple clients

    Hi
    I have my RMI application with one server and 6 clients. I keep all the server and client programs in the same directory. When i run the clients, the first 2 clients work properly but when the third or the fourth client starts, it works normally in getting the data and after a while it crashes. If teh third crashes the 4th works and if the 4th crashes the 3rd, 4th and 5th works ...randomly atleast one or 2 clients crash always.
    following is the error message generated for a client named controller:
    [ code ]
    Exception in thread "main" java.lang.NullPointerException
    at PostOfficeImpl.isinputAvail(PostOfficeImpl.Java:315)
    at PostOfficeImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
    at sun,rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun,rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun,rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun,rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
    at PostOfficeImpl_Stub.isinputAvail(Unknown Source)
    at CONTROLLER.main(CONTROLLER.java:167)
    my ser ver program is as follows:
    class PostOfficeServer extends java.rmi.server.UnicastRemoteObject implements java.rmi.Remote {
    // Instance of ourselves
    public static String name;
    private static PostOfficeServer rmi;
    // public No-argument constructor
    public PostOfficeServer() throws RemoteException {
         super();
    public static void main(String[] args){
    if(System.getSecurityManager() == null) {
         System.setSecurityManager(new RMISecurityManager());
    try {
         new PostOfficeServer();
         PostOffice postOfficeserver = new PostOfficeImpl();
    try {
         getIP ipAdd1 = new getIP();
         String ip1 = ipAdd1.getIP();
         name = "//" + ip1 + "/PostOffice";
    catch (Exception e){
         System.out.println();
    Naming.rebind(name, postOfficeserver);
    System.out.println("RemoteServer bound");
    System.out.println("initialise Data Structure");
    postOfficeserver.initDatastructure();
    System.out.println("initilised");
    catch (java.rmi.RemoteException e) {
         System.out.println("Cannot create remote server object");
    catch (java.net.MalformedURLException e) {
         System.out.println("Cannot look up server object");
    System.out.println("Server started.");
    System.out.println("Enter <CR> to end.");
    try {
         int serve2end = System.in.read();
    }catch (IOException ioException) {
    System.exit(0);
    //endoffilePlease advise as this is very urgent

    Hi
    the following is the code for PostOfficeImpl...its a long code but i include it so that I get your help please...
    import java.io.*;
    import java.net.*;
    import java.lang.*;
    import java.rmi.*;
    import java.rmi.server.*;
    import java.rmi.RemoteException;
    import java.util.HashMap;
    import java.util.*;
    public class PostOfficeImpl extends java.rmi.server.UnicastRemoteObject implements PostOffice {
    //Implementations must have an explicit constructor in order to declare the
    //RemoteException exception
    public PostOfficeImpl() throws java.rmi.RemoteException {
         super();
    public static LinkedListImpl list = new LinkedListImpl();
    public static oListImpl ovarList  = new oListImpl();
    public static iListImpl ivarList =new iListImpl();
    public static lipsList llfirst;
    public static oList opchannel, ofirst, onext;
    public static iList ipchannel, ichan, ifirst;
    public static  String[] variNumber= new String[100];
    public static String[] inoutChan, inChan, outChan,inVAR, invarLIST,outVAR, outvarLIST ;
    public static String[][] driveMat;
    DriverMatrix_mthds drive = new DriverMatrix_mthds();
    private static  Boolean All_Vacant;
    private static  Boolean tAll_Vacant;
    public void sendAll_Vacant(Boolean All_Vacant) throws RemoteException {
         tAll_Vacant = All_Vacant;
    public Boolean getAll_Vacant() throws RemoteException{
          return tAll_Vacant;
    public  void initDatastructure() throws RemoteException{
    ifirst = null;
    ofirst=null;
    int i=0, j=0, k=0, ind1=0, ind2=0;
    try{/// initialise list
         drive = new DriverMatrix_mthds();
         drive.VarTypeArray();
         drive.nodeHeadVarType();
         String[] variablel = drive.Variablelist();
         drive.lipsvariablist();
         drive.NodeOrigin();
    drive.nodeInput();
         drive.numOfnodes();
         drive.noOfVariables();
         drive.Assignlist();
         drive.novarType();
         drive.varNameType();
         drive.nodeNumName();
         drive.driverMat();
         String[][] lookupvar = drive.varNameType();
         //tempdrive = drive.driverMat();
         long leng1 = variablel.length;
         int varlistlength = (int) leng1;
         int counter;
         String s1="";
         String s2="";
         String s3 = "";
         String s4 = "";
         String s6 = "";
         int s5=0, c=0;
         while(variablel[k] !=null){
              k=k+1;
         int i1, j1;
         String  varname, varnumber;
         varnumber = "";
    while(i<=variablel.length-1){
         if(variablel!=null){
         c=c+1;
         i=i+1;
    try{
         ind1=0; ind2 = 0;i=0;
    while(!(variablel[i].equals("end of file"))){
         s1 = variablel[i];
         i=i+1;
         s2 = variablel[i];
         i=i+1;
         System.out.println("     " + s1+"     "+s2);
    while(!(variablel[i].equals("end of input variable"))){
         s4 = variablel[i];
         i1=0;
         Brkwhile:while(i1<=lookupvar.length-1){
         j1=1;
         if(lookupvar[i1][j1] != null){
         if(lookupvar[i1][j1].equals(s4)){
              s3 = lookupvar[i1][0];
              break Brkwhile;
         i1=i1+1;
    //ifirst.varNum = varnumber;
    s5 = 0;
    s6 = null;
    ifirst= new iList(s3,s4, s5, s6);
    ivarList.add(ifirst);
    System.out.println(s3+"     "+s4+"     "+s5+"     "+s6);
    i=i+1;
    i = i + 1;
    System.out.println("input list finished ");
    while(!(variablel[i].equals("end of output variable"))){
         s4 = variablel[i];
         i1=0;
         j1=1;
         Brkwhile:while(lookupvar[i1][j1] != null){
              if(lookupvar[i1][j1].equals(s4)){
              s3 = lookupvar[i1][0];
              break Brkwhile;
         i1=i1+1;
         s5 = 0;
         s6 = null;
         ofirst= new oList(s3,s4, s5, s6);
         ovarList.add(ofirst);
         System.out.println(s3+"     "+s4+"     "+s5+"     "+s6);
         i=i+1;
         llfirst = new lipsList(s1, s2, ivarList, ovarList);
         list.add(llfirst);
         System.out.println("output list finished ");
         i=i+1;
         catch (NullPointerException ne){
         catch (Exception d){}
    public int isitOK(reqPacket sndNodetail)
         throws RemoteException{
         String nodnum = sndNodetail.srcNum;
         String varnum = sndNodetail.varNum;
         int status = 0;
         llfirst = list.getFirst();
         try{mainbegin:while (llfirst != null){
              if((llfirst.nodeNum).equals(nodnum)){
              ofirst = ovarList.getFirst();
              while(ofirst != null){
                   if((ofirst.varNum).equals(varnum)){
                   if(ofirst.varVal==null){
                   status = 1;
                   break mainbegin;
         ofirst = ofirst.next;
         llfirst = llfirst.next;
         catch (NullPointerException nl){}
         return status;
    public int senData(dataPacket sendToRTS)
         throws RemoteException{
    dataPacket datDetail = sendToRTS;
    String nnum, vnum,typename, dval;
    String dtype = "";
    nnum = datDetail.nodeNum;
    vnum = datDetail.varNum;
    typename = datDetail.dataType;
    dval = String.valueOf(datDetail.dataVal);
    String [][] tempdrive, varnametype;
    int status =0;
    System.out.println("data received is from node " nnum " is "+ dval+"var num " +vnum);
    status =0;
    try{
    //DriverMatrix_mthds drive = new DriverMatrix_mthds();
    drive.VarTypeArray();
    drive.Variablelist();
    drive.NodeOrigin();
    drive.nodeInput();
    drive.numOfnodes();
    drive.noOfVariables();
    String[][] lookupvar = drive.novarType();
    drive.varNameType();
    drive.nodeNumName();
    drive.driverMat();
    tempdrive = drive.driverMat();
    String varname="";
    int i,j;
    //with the recived var name get the var num
    for(i=0; i<=lookupvar.length-1; i++){
         j=0;
         if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(typename)){
                   dtype = lookupvar[i][1];
         }//varname is moved to dtype n used for checking
         for(i=0; i<=tempdrive.length-1; i++){j=0;
         if (tempdrive[i][j] != null){
         if (tempdrive[i][0].equals(vnum)){
              if (tempdrive[i][1].equals(nnum)){
              if(tempdrive[i][2].equals(dtype)){
              status = 1;
         }//System.out.println("received data " vnum " "+ nnum +" " + dtype +" "+dval);// after checking status if the status is 1 then set the counter n olist// to no of times the value has to be ditributed
    int Ccount =0;
    //opchannel = llfirst.olist;
    try{
         System.out.println("status"+status);
         if (status == 1){
              llfirst = list.getFirst();
         mainWhile: while (llfirst != null){
              if((llfirst.nodeNum).equals(nnum)){
                   ofirst = ovarList.getFirst();
                   while(ofirst != null){
                   if((ofirst.varNum).equals(vnum)){
                        ofirst.varVal =dval;
                        //setting the counter for the varname
                        //check driver matrix fr the no of occurances
                   for(i=0; i<=tempdrive.length-1; i++){
                   j=0;
                   if (tempdrive[i][j] != null){
                        if (tempdrive[i][0].equals(vnum)){
                        for(j= j+3;j<=tempdrive.length-1;j++){
                        if(tempdrive[i][j] != null){
                        if(tempdrive[i][j].equals("1")){
                        Ccount = Ccount + 1;
    System.out.println("count"+Ccount);
    ofirst.counter = Ccount;
    ofirst.varNum = vnum;for(i=0; i<=lookupvar.length-1; i++){
    for(j=0; j<=2; j++){
         if(lookupvar[i][j] != null){
         if(lookupvar[i][j].equals(vnum)){
              varname = lookupvar[i][1];
         ofirst.varName = varname;
         Ccount=0;
         break mainWhile;
         ofirst = ofirst.next;
         llfirst = llfirst.next;
         catch(NullPointerException s){}
    /*use the vnum in the driver matrix and find out the nodes to which this variable
    *has been sent as input , i mean destination nodes..
    *find the node numbers ..knowing the node numbers parse through data structure
    and set the input values to value and status 1./
    llfirst = list.getFirst();
    while(llfirst != null){
         ifirst = llfirst.ilist.getFirst();
         while(ifirst != null){
              if (ifirst.varNum.equals(vnum)){
              ifirst.varStat = 1;
              ifirst.varVal = dval;
              //     System.out.println("nodenum "+llfirst.nodeNum+" varval     " + ifirst.varVal +"     stat "+ifirst.varStat+" vnum " + ifirst.varNum);
         ifirst=ifirst.next;
         llfirst=llfirst.next;
         catch (Exception e){};
         return status;
    public int isinputAvail(reqPacket inputReq)
         throws RemoteException{
         String srcnum = inputReq.srcNum;
         String varnum = inputReq.varNum;
         int availstatus =0;
         llfirst = list.getFirst();
         //System.out.println("llfirst.nodeNum     "+ llfirst.nodeNum);
         whileloop:while (llfirst != null){
              if((llfirst.nodeNum).equals(srcnum)){
              ifirst = llfirst.ilist.getFirst();
              breakloop: while(ifirst != null){
              //System.out.println("var num " + varnum + "     " + "status outside" + ifirst.varStat);
              if((ifirst.varNum).equals(varnum)){
              if (ifirst.varStat == 1){
                   availstatus = 1;
                   ifirst.varStat = 0;
                   // System.out.println("var num " + varnum + "     " + "status" + availstatus);
                   break whileloop;
         ifirst = ifirst.next;
         llfirst = llfirst.next;
         //System.out.println("var num " + varnum + "     " + "status" + availstatus);
         return availstatus;
    public dataPacket senDatatoNode(reqPacket sendFromRTS)
         throws RemoteException {
         String nnum, vnum, dtype, dval;
         //nnum = "";
         dtype="";
         //opchannel = llfirst.olist;
         //     ipchannel = llfirst.ilist;
         reqPacket sendfromrts = sendFromRTS;
         nnum = sendfromrts.srcNum;
         vnum = sendfromrts.varNum;
         //     dtype = sendFromRTS.dataType;
         dval = "";
         int ctrchk=0;
         try{
         //send data to process node n reduce the counter by 1
         llfirst = list.getFirst();
              mainWhile: while (llfirst != null){
              if((llfirst.nodeNum).equals(nnum)){
              ofirst = llfirst.olist.getFirst();
         whileofirst: while(ofirst != null){
              if((ofirst.varNum).equals(vnum)){
              dval = ofirst.varVal;
              ofirst.counter = ofirst.counter - 1;
              //     System.out.println(ofirst.counter);
              ctrchk=ofirst.counter;
              break whileofirst;
         ofirst = ofirst.next;
    //set the status of respective input channel to 0 as data has been sent
         ifirst = llfirst.ilist.getFirst();
         if(ctrchk == 0){
         whileifirst: while(ifirst != null){
              if((ifirst.varNum).equals(vnum)){
              //ifirst.varVal = dval;
              ifirst.varStat =0;
              break whileifirst;
         llfirst = llfirst.next;
         //System.out.println(llfirst);
         catch(NullPointerException s){}
    //find type
    try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varNum = vnum;
         for(i=0; i<=lookupvar.length-1; i++){
              j=0;
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(vnum)){
              dtype = lookupvar[i][2];
         catch (Exception d){}
         dataPacket retpac = new dataPacket(nnum, vnum, dtype, dval);
         System.out.println("msg sent "+ nnum +"     " + vnum+" "+ dtype+"     "+ dval);
         return retpac;
    public String findnodeName(String nodeNum)
         throws RemoteException{
    String nnum = nodeNum;
    llfirst = list.getFirst();
    while (llfirst != null){
         if((llfirst.nodeNum).equals(nnum)){
         return llfirst.nodeName;
         llfirst = llfirst.next;
         System.out.println("node Number does not match with the list of node numbers generated..try again");
         return null;
    //find the nodenum given the node name
    public String findnodenum(String nodename)
         throws RemoteException{
         String nodenumber ="";
         String nodname = nodename;
         try{DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         driver.varNameType();
         String[][] lookupnode = driver.nodeNumName();
         int i, j;
         for(i=0; i<=lookupnode.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupnode[i][j] != null){
              if(lookupnode[i][j].equals(nodname)){
                   nodenumber = lookupnode[i][2];
         catch (Exception d){}
         return nodenumber;
    public String findvarnum(String variablename)
         throws RemoteException{
         String varnumber = "";
         try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType()     ;
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varname = variablename;
         for(i=0; i<=lookupvar.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(varname)){
                   varnumber = lookupvar[i][0];
    catch (Exception d){}
    return varnumber;
    public String findvartype(String varname)
         throws RemoteException{
         String vartype = "";
         try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         driver.novarType();
         String[][] lookupvar = driver.varNameType();
         int i, j;
         String varName = varname;
         for(i=0; i<=lookupvar.length-1; i++){
         for(j=0; j<=2; j++){
              if(lookupvar[i][j] != null){
              if(lookupvar[i][j].equals(varName)){
                   vartype = lookupvar[i][2];
    catch (Exception d){}
    return vartype;
    public String findtypenum(String vartype){
    String varnum = "";int i;
    try{
         DriverMatrix_mthds driver = new DriverMatrix_mthds();
         driver.VarTypeArray();
         driver.Variablelist();
         driver.NodeOrigin();
         driver.nodeInput();
         driver.numOfnodes();
         driver.noOfVariables();
         String varNum[][] =      driver.novarType()     ;
         String varType = vartype;
         for(i=0; i<=9-1; i++){
              if(varNum[i][0] != null){
              if(varNum[i][0].equals(varType)){
                   varnum = varNum[i][1];
    catch (Exception d){}
    return vartype;
    //return input variable list
    public String[] inoutchanlist(String nodenum, String nodenam)
         throws RemoteException{
    try{
         DriverMatrix_mthds drive = new DriverMatrix_mthds();
         String[] varLIST = drive.Variablelist();
         int i=0;int j;
         while(varLIST[i]!=null){
              i=i+1;
         int arrlength = i;
         inoutChan = new String[arrlength];
         i=0; j=0;
         WHILELOOP:
         while(!(varLIST[i].equals("end of file"))){
         while(varLIST[i].equals(nodenum)){
              i=i+1;
              while(varLIST[i].equals(nodenam)){
                   i=i+1;
                   while(!(varLIST[i].equals("end of input variable"))){
                        inoutChan[j] = varLIST[i];
                        i=i+1;
                        j=j+1;
              System.out.println("endofinput");
              inoutChan[j]="endofinchan";
              j=j+1;
              i=i+1;
              while(!(varLIST[i].equals("end of output variable"))){
         inoutChan[j] = varLIST[i];
         i=i+1;
         j=j+1;
         System.out.println("endofoutput");
         inoutChan[j]="endofoutchan";
         break WHILELOOP;
         i=i+1;
         arrlength =j;
         for(j=0; j<=arrlength-1; j++){
         System.out.println(inoutChan[j]);
         catch (Exception e){}
         return inoutChan;
    public String[] inchannel(String[] inoutChan) throws RemoteException{
    int count=0;int i=0, j=0;
    System.out.println("entered");
    while(inoutChan[count]!=null){
         System.out.println(count + " " +inoutChan[count]);
         count=count+1;
         inChan = new String[count];
         while(!(inoutChan[i].equals("endofinchan"))){
         inChan[j] =inoutChan[i];
         j=j+1; i=i+1;
    return inChan;
    public String[] outchannel(String[] inoutChan) throws RemoteException{
    int count=0;int i=0, j=0;
    System.out.println("entered");
    while(inoutChan[count]!=null){
         System.out.println(count + " " +inoutChan[count]);
         count=count+1;
         outChan = new String[count+1];
         while(!(inoutChan[i].equals("endofinchan"))){
              i=i+1;
         i=i+1;
         while(!(inoutChan[i].equals("endofoutchan"))){
              outChan[j] =inoutChan[i];
              j=j+1; i=i+1;
         return outChan;
    public String[] invarChan(String nodename, int guardno)throws RemoteException{
    try{
    DriverMatrix_mthds drive = new DriverMatrix_mthds();
    invarLIST = drive.invarlist();
    int i=0;int j;
    while(invarLIST[i]!=null){
         i=i+1;
         int arrlength = i;
         inVAR = new String[arrlength];
         i=0; j=0;
              WHILELOOP: while(!(invarLIST[i].equals("end of file"))){
                   if (invarLIST[i].equals(nodename)){
         i=i+1;
         while(!(invarLIST[i].equals(nodename+String.valueOf(guardno)))){
         i=i+1;}
         i=i+1;
         while(!(invarLIST[i].equals("endofguard"))){
         System.out.println(invarLIST[i]);inVAR[j]=invarLIST[i]; i=i+1; j=j+1;}
         break WHILELOOP;}
         i=i+1;}
    }catch (Exception d){}
    return inVAR;
    public String[] outvarChan(String nodename, int guardcount)throws RemoteException{
         try{
         DriverMatrix_mthds drive = new DriverMatrix_mthds();
         outvarLIST = drive.outvarlist();
         int i=0;int j;
         while(outvarLIST[i]!=null){
              i=i+1;
         int arrlength = i;
         outVAR = new String[arrlength];
         i=0; j=0;
         WHILELOOP: while(!(outvarLIST[i].equals("end of file"))){
              if (outvarLIST[i].equals(nodename)){
                   i=i+1;
                   while(!(outvarLIST[i].equals(nodename+String.valueOf(guardcount)+"guard"))){
                        i=i+1;}
              i=i+1;
              while(!(outvarLIST[i].equals("end guard"))){
              System.out.println(outvarLIST[i]);outVAR[j]=outvarLIST[i]; i=i+1; j=j+1;}
              break WHILELOOP;}
         i=i+1;}
    }catch (Exception d){}
    return outVAR;
    private static Boolean start;
    private static Boolean tstart;
    public void sendstart(Boolean start) throws RemoteException {
         tstart = start;
    public Boolean getstart() throws RemoteException{
         return tstart;
    private static Boolean done;
    private static Boolean tdone;
    public void senddone(Boolean done) throws RemoteException {
         tdone = done;
    public Boolean getdone() throws RemoteException{
         return tdone;
    private static Boolean vac_busy1;
    private static Boolean tvac_busy1;
    public void sendvac_busy1(Boolean vac_busy1) throws RemoteException {
         tvac_busy1 = vac_busy1;
    public Boolean getvac_busy1() throws RemoteException{
         return tvac_busy1;
    private static int cus1_rit1;
    private static int tcus1_rit1;
    public void sendcus1_rit1(int cus1_rit1) throws RemoteException {
         tcus1_rit1 = cus1_rit1;
    public int getcus1_rit1() throws RemoteException{
         return tcus1_rit1;
    private static int cus1_rit2;
    private static int tcus1_rit2;
    public void sendcus1_rit2(int cus1_rit2) throws RemoteException {
         tcus1_rit2 = cus1_rit2;
    public int getcus1_rit2() throws RemoteException{
         return tcus1_rit2;
    private static int cus1_rit3;
    private static int tcus1_rit3;
    public void sendcus1_rit3(int cus1_rit3) throws RemoteException {
         tcus1_rit3 = cus1_rit3;
    public int getcus1_rit3() throws RemoteException{
         return tcus1_rit3;
    private static int cus1_it1;
    private static int tcus1_it1;
    public void sendcus1_it1(int cus1_it1) throws RemoteException {
         tcus1_it1 = cus1_it1;
    public int getcus1_it1() throws RemoteException{
         return tcus1_it1;
    private static int cus1_it2;
    private static int tcus1_it2;
    public void sendcus1_it2(int cus1_it2) throws RemoteException {
         tcus1_it2 = cus1_it2;
    public int getcus1_it2() throws RemoteException{
         return tcus1_it2;
    private static int cus1_it3;
    private static int tcus1_it3;
    public void sendcus1_it3(int cus1_it3) throws RemoteException {
         tcus1_it3 = cus1_it3;
    public int getcus1_it3() throws RemoteException{
         return tcus1_it3;
    private static int stkit_11;
    private static int tstkit_11;
    public void sendstkit_11(int stkit_11) throws RemoteException {
         tstkit_11 = stkit_11;
    public int getstkit_11() throws RemoteException{
         return tstkit_11;
    private static int stkit_12;
    private static int tstkit_12;
    public void sendstkit_12(int stkit_12) throws RemoteException {
         tstkit_12 = stkit_12;
    public int getstkit_12() throws RemoteException{
         return tstkit_12;
    private static int stkit_13;
    private static int tstkit_13;
    public void sendstkit_13(int stkit_13) throws RemoteException {
         tstkit_13 = stkit_13;
    public int getstkit_13() throws RemoteException{
         return tstkit_13;
    private static int c1_it1;
    private static int tc1_it1;
    public void sendc1_it1(int c1_it1) throws RemoteException {
         tc1_it1 = c1_it1;
    public int getc1_it1() throws RemoteException{
         return tc1_it1;
    private static int c1_it2;
    private static int tc1_it2;
    public void sendc1_it2(int c1_it2) throws RemoteException {
         tc1_it2 = c1_it2;
    public int getc1_it2() throws RemoteException{
         return tc1_it2;
    private static int c1_it3;
    private static int tc1_it3;
    public void sendc1_it3(int c1_it3) throws RemoteException {
         tc1_it3 = c1_it3;
    public int getc1_it3() throws RemoteException{
         return tc1_it3;
    //endoffile

  • Problem with multiple client numbers from a view

    Hi Gurus,
    I have a problem with a view
    Creates a view with a UNION ALL stmt
    =====================================
    Create view vw_benifits
    as
    SELECT
         Client_num, -- can have multiple values like 200,201,250
         PERNR,     
         OBJPS,     
         ENDDA,     
         BEGDA,
         AEDTM,     
         UNAME,
         COB_MNTH_AMT
    FROM
         STG_SAP_PA9211_TB
    UNION ALL
    SELECT
         null, -- no client number for legacy data
         PERNR,     
         OBJPS,     
         ENDDA,     
         BEGDA,
         AEDTM,     
         UNAME,
    COB_MNTH_AMT
    from
         LEG_STG_SAP_PA9211_TB;
    ==============================
    The second table contains legacy data (LEG_STG_SAP_PA9211_TB). The first table now contains multiple client data (ie the client_num can be 201,202,250 like that.
    Now if the users qery the view they will only get that clients data.
    eg selet * from vw_benifits where client_num=250 results only client 250 data. But I want to add the legacy data also with that.
    I don't want to propose
    selet * from vw_benifits where client_num in (250,NULL) since the users will be confused.
    Is there any other way to do this . my requirement is like
    If they query
    select * from vw_benifits where client_num=250, the data should include all the records satisfying client=250 + the records from the legacy data. The view need to be created like that.
    Appreciate your help
    Deepak

    Hi Thanks for the suggestion.
    But I am not sure this may work for me. Here my users may not be able to use that since they don't know Oracle.
    I want to hide that details from them
    They may just issue a statement like this
    select * from vw_benifits where client_num =250
    Or
    select * from vw_benifits where client_num =400 . But both times I need to show them the data from the legacy table.
    Deepak

  • Can I connect 9i server with 10g client

    Can I connect to 9i database,
    with 10g client installation.
    Thanks,
    Satish.

    Thanks,
    But, Iam facing another problem.
    When I am trying to connect to Oracle 9i server database with Oracle 10g client, Iam facing the following problem.
    On my 10g client machine for the tnsnames.org file, I added configuration of Oracle 9i service. When Iam trying to connect with username, password and host string of oracle 9i server, I am getting the following error:
    ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
    Waiting for Reply,
    Satish.

  • How To Manage Premiere Cache Files On A Central Storage Server with Multiple editors

    Look for the proper recommended setup in a shared storage environment with multiple editors. Where do cache files reside on each editor locally or on the shared storage.
    This is in a Windows 7 Environment using EMC2 Isilon for our shared storage. We are running Premier Pro CC 2014 8.1 Caravan Build 8.2.0(65)
    Thanks
    Rodney

    Look for the proper recommended setup in a shared storage environment with multiple editors. Where do cache files reside on each editor locally or on the shared storage.
    This is in a Windows 7 Environment using EMC2 Isilon for our shared storage. We are running Premier Pro CC 2014 8.1 Caravan Build 8.2.0(65)
    Thanks
    Rodney

Maybe you are looking for

  • How to change the characteristic value in a item of sales order by FM?

    Hi experts, I guess the FM BAPI_SALESORDER_CHANGE can implement my requirement. But I have made many testing program, that's all failed. I don't know which part is not correct. So could you give a very simple sample to me? Just change the characteris

  • Msi-6366 + Lg Dvd Rw

    Greetings, just for your information, I have encountered and solved a problem installing the LG GSA-4120B 12X Super Multi DVD Rewriter in a MSI-6366 system.  The problem was that I was unable to read or write any kind of DVD, at the same time I was a

  • Creative Cloud - Unknown Server Error [OSX 10.8.4]

    Hi, I've been searching the forums for a while and have not found a soultion to this problem. When ever I try and log into CC to update my apps I get the following message: "Unknown Server Error - Sign in is currently unavailable. We are unable to ac

  • MacBook shuts down after update on startup

    Today my MacBook has been acting up again. This time, I shut it Down and restarted it, then it started applying the update for a while. Then, after it's done, it shus down. When I power it up again, it updates again. Then the same cycle repeats and r

  • Install of NI Developer Suite 2010 hangs at inserting DVD 2

    I am trying to install NI Developer suite 2010 DS2 on my home PC, upgrading from 8.6.  When it comes to the point where I need to insert the DVD #2, it hangs.  Wont let me rescan drive, cancel or close the window.  Only way out I've found is a restar