Client Server in Java

Set up a Server that will receive packets from a client and send packets to a client. Also set up a Client that will send packets to a server and receive packets from a server.
[sourcecode language=”java”]/*******************************************************
* MYCPLUS Sample Code – https://www.mycplus.com *
* *
* This code is made available as a service to our *
* visitors and is provided strictly for the *
* purpose of illustration. *
* *
* Please direct all inquiries to saqib at mycplus.com *
*******************************************************/

// Server.java
// Set up a Server that will receive packets from a
// client and send packets to a client.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Server extends JFrame {
private JTextArea display;

private DatagramPacket sendPacket, receivePacket;
private DatagramSocket socket;

public Server()
{
super( “Server” );

display = new JTextArea();
getContentPane().add( new JScrollPane( display),
BorderLayout.CENTER );
setSize( 400, 300 );
show();

try {
socket = new DatagramSocket( 5000 );
}
catch( SocketException se ) {
se.printStackTrace();
System.exit( 1 );
}
}

public void waitForPackets()
{
while ( true ) {
try {
// set up packet
byte data[] = new byte[ 100 ];
receivePacket =
new DatagramPacket( data, data.length );

// wait for packet
socket.receive( receivePacket );

// process packet
display.append( “\nPacket received:” +
“\nFrom host: ” + receivePacket.getAddress() +
“\nHost port: ” + receivePacket.getPort() +
“\nLength: ” + receivePacket.getLength() +
“\nContaining:\n\t” +
new String( receivePacket.getData(), 0,
receivePacket.getLength() ) );

// echo information from packet back to client
display.append( “\n\nEcho data to client…”);
sendPacket =
new DatagramPacket( receivePacket.getData(),
receivePacket.getLength(),
receivePacket.getAddress(),
receivePacket.getPort() );
socket.send( sendPacket );
display.append( “Packet sent\n” );
display.setCaretPosition(
display.getText().length() );
}
catch( IOException io ) {
display.append( io.toString() + “\n” );
io.printStackTrace();
}
}
}

public static void main( String args[] )
{
Server app = new Server();

app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
System.exit( 0 );
}
}
);

app.waitForPackets();
}
}

// Fig. 21.6: Client.java
// Set up a Client that will send packets to a
// server and receive packets from a server.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Client extends JFrame implements ActionListener {
private JTextField enter;
private JTextArea display;

private DatagramPacket sendPacket, receivePacket;
private DatagramSocket socket;

public Client()
{
super( “Client” );

enter = new JTextField( “Type message here” );
enter.addActionListener( this );
getContentPane().add( enter, BorderLayout.NORTH );
display = new JTextArea();
getContentPane().add( new JScrollPane( display ),
BorderLayout.CENTER );
setSize( 400, 300 );
show();

try {
socket = new DatagramSocket();
}
catch( SocketException se ) {
se.printStackTrace();
System.exit( 1 );
}
}

public void waitForPackets()
{
while ( true ) {
try {
// set up packet
byte data[] = new byte[ 100 ];
receivePacket =
new DatagramPacket( data, data.length );

// wait for packet
socket.receive( receivePacket );

// process packet
display.append( “\nPacket received:” +
“\nFrom host: ” + receivePacket.getAddress() +
“\nHost port: ” + receivePacket.getPort() +
“\nLength: ” + receivePacket.getLength() +
“\nContaining:\n\t” +
new String( receivePacket.getData(), 0,
receivePacket.getLength() ) );
display.setCaretPosition(
display.getText().length() );
}
catch( IOException exception ) {
display.append( exception.toString() + “\n” );
exception.printStackTrace();
}
}
}

public void actionPerformed( ActionEvent e )
{
try {
display.append( “\nSending packet containing: ” +
e.getActionCommand() + “\n” );

String s = e.getActionCommand();
byte data[] = s.getBytes();

sendPacket = new DatagramPacket( data, data.length,
InetAddress.getLocalHost(), 5000 );
socket.send( sendPacket );
display.append( “Packet sent\n” );
display.setCaretPosition(
display.getText().length() );

}
catch ( IOException exception ) {
display.append( exception.toString() + “\n” );
exception.printStackTrace();
}
}

public static void main( String args[] )
{
Client app = new Client();

app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
System.exit( 0 );
}
}
);

app.waitForPackets();
}
}

/**************************************************************************
* (C) Copyright 1999 by Deitel & Associates, Inc. and Prentice Hall. *
* All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/[/sourcecode]

M. Saqib: Saqib is Master-level Senior Software Engineer with over 14 years of experience in designing and developing large-scale software and web applications. He has more than eight years experience of leading software development teams. Saqib provides consultancy to develop software systems and web services for Fortune 500 companies. He has hands-on experience in C/C++ Java, JavaScript, PHP and .NET Technologies. Saqib owns and write contents on mycplus.com since 2004.
Related Post