Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 

TCP Echo Server Form Java code example - Click here to copy ->>>

   Can't find what you're looking for? Try our search:

Really working examples categorized by API, package, class. You can compile and run our examples right away! Not from source code for Java projects - only working examples! Copy, compile and run!
------------------

Code:

 
 

// unnamed package

import java.io.IOException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;


class TCPEchoServerForm
    extends Form
    implements CommandListener, TCPConnectionHandlerListener
{
    private final TCPEchoServerMIDlet midlet;
    private final StringItem urlField;
    private final StringItem numConnectionsField;
    private final StringItem statusField;
    private final Command quitCommand;
    private final long startTimeMillis;

    private TCPServer tcpServer = null;
    private int numConnections = 0;
    private int id = 0;


    TCPEchoServerForm(TCPEchoServerMIDlet midlet, String url)
    {
        super("Echo Server"); // 0 connections initially served

        this.midlet = midlet;

        startTimeMillis = System.currentTimeMillis();

        urlField = new StringItem("Local URL", url);
        append(urlField);
        numConnectionsField = new StringItem("Num. Connections", "0");
        append(numConnectionsField);
        statusField = new StringItem("Status", "listening");
        append(statusField);

        quitCommand = new Command("Quit", "Quit MIDlet", Command.EXIT, 1);
        addCommand(quitCommand);
        setCommandListener(this);
    }


    void setTcpServer(TCPServer tcpServer)
    {
        this.tcpServer = tcpServer;
    }


    public void commandAction(Command cmd, Displayable disp)
    {
        if (cmd == quitCommand)
        {
            midlet.formQuit();
        }
    }


    // interface TCPConnectionListener

    public void handleConnectionOpen(TCPConnectionHandler handler,
                                     String remoteAddress,
                                     int remotePort)
    {
        if (tcpServer != null)
        {
            synchronized(this)
            {
                numConnections++;
            }
            String str = Integer.toString(numConnections);
            numConnectionsField.setText(str);
        }

        statusField.setText("New socket connection accepted for: '" +
                            remoteAddress + ":" + remotePort + "'");
    }


    public void handleConnectionOpenError(TCPConnectionHandler handler,
                                               String remoteAddress,
                                               int remotePort)
    {
        statusField.setText("Error opening a socket connection to: '" +
                            remoteAddress + ":" + remotePort + "'");
    }


    public void handleConnectionMessage(TCPConnectionHandler handler,
                                        String remoteAddress,
                                        int remotePort,
                                        byte[] messageBytes)
    {
        String msg = new String(messageBytes);
        statusField.setText("(@ " +
                            (System.currentTimeMillis() - startTimeMillis) +
                            " msecs) Echoing message: \"" + msg + "\"" +
                            " back to " +
                            remoteAddress + ":" + remotePort);

        // 'Echo server' : echo the bytes back
        Integer identifier = new Integer(id++);
        handler.queueMessageForSending(messageBytes);
    }


    public void handleConnectionClose(TCPConnectionHandler handler,
                                      String remoteAddress,
                                      int remotePort)
    {
        synchronized(this)
        {
            numConnections--;
        }
        String str = Integer.toString(numConnections);
        numConnectionsField.setText(str);

        statusField.setText("Socket connection close for: '" +
                            remoteAddress + ":" + remotePort + "'");
    }


    public void handleError(String errorMessage)
    {
        statusField.setText("Error : \"" + errorMessage + "\"");
    }
}

// Copyright 2003 Nokia Corporation.
//
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED
// BY THIRD PARTIES
//
// Furthermore, information provided in this source code is preliminary,
// and may be changed substantially prior to final release. Nokia Corporation
// retains the right to make changes to this source code at
// any time, without notice. This source code is provided for informational
// purposes only.
//
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
//
// A non-exclusive, non-transferable, worldwide, limited license is hereby
// granted to the Licensee to download, print, reproduce and modify the
// source code. The licensee has the right to market, sell, distribute and
// make available the source code in original or modified form only when
// incorporated into the programs developed by the Licensee. No other
// license, express or implied, by estoppel or otherwise, to any other
// intellectual property rights is granted herein.
 
 



References.

The list of classes which were used on this page you can find below. The links to Java API contain official SUN documentation about all used classes.




[ Go Back ]



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy