Posted by : Unknown
Friday, 19 June 2015
Client / Server Chatting Program
Client / Server Connection Program
100% works...!
Client Side Program:
import java.io.*;
import java.net.*;
import java.util.Scanner;
class CLChatClient {
static final String DEFAULT_PORT = "1728";
static final String HANDSHAKE = "CLChat";
static final char MESSAGE = '0';
static final char CLOSE = '1';
public static void main(String[] args) {
String computer;
String portStr;
int port;
import java.net.*;
import java.util.Scanner;
class CLChatClient {
static final String DEFAULT_PORT = "1728";
static final String HANDSHAKE = "CLChat";
static final char MESSAGE = '0';
static final char CLOSE = '1';
public static void main(String[] args) {
String computer;
String portStr;
int port;
Socket connection;
BufferedReader incoming; // Stream for receiving data from server.
PrintWriter outgoing; // Stream for sending data to server.
String messageOut; // A message to be sent to the server.
String messageIn; // A message received from the server.
Scanner userInput; // A wrapper for System.in, for reading
if (args.length == 0) {
Scanner stdin = new Scanner(System.in);
System.out.print("Enter computer name or IP address: ");
computer = stdin.nextLine();
System.out.print("Enter port, or press return to use default:");
portStr = stdin.nextLine();
if (portStr.length() == 0)
portStr = DEFAULT_PORT;
}
else {
computer = args[0];
if (args.length == 1)
portStr = DEFAULT_PORT;
else
portStr = args[1];
}
try {
port= Integer.parseInt(portStr);
if (port <= 0 || port > 65535)
throw new NumberFormatException();
}
catch (NumberFormatException e) {
System.out.println("Illegal port number, " + args[1]);
return;
}
try {
System.out.println("Connecting to " + computer + " on port " + port);
connection = new Socket(computer,port);
incoming = new BufferedReader(
new InputStreamReader(connection.getInputStream()) );
outgoing = new PrintWriter(connection.getOutputStream());
outgoing.println(HANDSHAKE); // Send handshake to client.
outgoing.flush();
messageIn = incoming.readLine(); // Receive handshake from client.
if (! messageIn.equals(HANDSHAKE) ) {
throw new IOException("Connected program is not CLChat!");
}
System.out.println("Connected. Enter your first message.");
}
catch (Exception e) {
System.out.println("An error occurred while opening connection.");
System.out.println(e.toString());
return;
}
/* Exchange messages with the other end of the connection until one side or
the other closes the connection. This client program sends the first message.
After that, messages alternate strictly back and forth. */
try {
userInput = new Scanner(System.in);
System.out.println("NOTE: Enter 'quit' to end the program.\n");
while (true) {
System.out.print("SEND: ");
messageOut = userInput.nextLine();
if (messageOut.equalsIgnoreCase("quit")) {
// User wants to quit. Inform the other side
// of the connection, then close the connection.
outgoing.println(CLOSE);
outgoing.flush();
connection.close();
System.out.println("Connection closed.");
break;
}
outgoing.println(MESSAGE + messageOut);
outgoing.flush();
if (outgoing.checkError()) {
throw new IOException("Error occurred while transmitting message.");
}
System.out.println("WAITING...");
messageIn = incoming.readLine();
if (messageIn.length() > 0) {
// The first character of the message is a command. If
// the command is CLOSE, then the connection is closed.
// Otherwise, remove the command character from the
// message and proceed.
if (messageIn.charAt(0) == CLOSE) {
System.out.println("Connection closed at other end.");
connection.close();
break;
}
messageIn = messageIn.substring(1);
}
System.out.println("RECEIVED: " + messageIn);
}
}
catch (Exception e) {
System.out.println("Sorry, an error has occurred. Connection lost.");
System.out.println(e.toString());
System.exit(1);
}
} // end main()
} //end class CLChatClient
BufferedReader incoming; // Stream for receiving data from server.
PrintWriter outgoing; // Stream for sending data to server.
String messageOut; // A message to be sent to the server.
String messageIn; // A message received from the server.
Scanner userInput; // A wrapper for System.in, for reading
if (args.length == 0) {
Scanner stdin = new Scanner(System.in);
System.out.print("Enter computer name or IP address: ");
computer = stdin.nextLine();
System.out.print("Enter port, or press return to use default:");
portStr = stdin.nextLine();
if (portStr.length() == 0)
portStr = DEFAULT_PORT;
}
else {
computer = args[0];
if (args.length == 1)
portStr = DEFAULT_PORT;
else
portStr = args[1];
}
try {
port= Integer.parseInt(portStr);
if (port <= 0 || port > 65535)
throw new NumberFormatException();
}
catch (NumberFormatException e) {
System.out.println("Illegal port number, " + args[1]);
return;
}
try {
System.out.println("Connecting to " + computer + " on port " + port);
connection = new Socket(computer,port);
incoming = new BufferedReader(
new InputStreamReader(connection.getInputStream()) );
outgoing = new PrintWriter(connection.getOutputStream());
outgoing.println(HANDSHAKE); // Send handshake to client.
outgoing.flush();
messageIn = incoming.readLine(); // Receive handshake from client.
if (! messageIn.equals(HANDSHAKE) ) {
throw new IOException("Connected program is not CLChat!");
}
System.out.println("Connected. Enter your first message.");
}
catch (Exception e) {
System.out.println("An error occurred while opening connection.");
System.out.println(e.toString());
return;
}
/* Exchange messages with the other end of the connection until one side or
the other closes the connection. This client program sends the first message.
After that, messages alternate strictly back and forth. */
try {
userInput = new Scanner(System.in);
System.out.println("NOTE: Enter 'quit' to end the program.\n");
while (true) {
System.out.print("SEND: ");
messageOut = userInput.nextLine();
if (messageOut.equalsIgnoreCase("quit")) {
// User wants to quit. Inform the other side
// of the connection, then close the connection.
outgoing.println(CLOSE);
outgoing.flush();
connection.close();
System.out.println("Connection closed.");
break;
}
outgoing.println(MESSAGE + messageOut);
outgoing.flush();
if (outgoing.checkError()) {
throw new IOException("Error occurred while transmitting message.");
}
System.out.println("WAITING...");
messageIn = incoming.readLine();
if (messageIn.length() > 0) {
// The first character of the message is a command. If
// the command is CLOSE, then the connection is closed.
// Otherwise, remove the command character from the
// message and proceed.
if (messageIn.charAt(0) == CLOSE) {
System.out.println("Connection closed at other end.");
connection.close();
break;
}
messageIn = messageIn.substring(1);
}
System.out.println("RECEIVED: " + messageIn);
}
}
catch (Exception e) {
System.out.println("Sorry, an error has occurred. Connection lost.");
System.out.println(e.toString());
System.exit(1);
}
} // end main()
} //end class CLChatClient
Server Side Program:
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class CLChatServer {
static final int DEFAULT_PORT = 1728;
static final String HANDSHAKE = "CLChat";
static final char MESSAGE = '0';
static final char CLOSE = '1';
public static void main(String[] args) {
int port; // The port on which the server listens.
ServerSocket listener; // Listens for a connection request.
Socket connection; // For communication with the client.
BufferedReader incoming; // Stream for receiving data from client.
PrintWriter outgoing; // Stream for sending data to client.
String messageOut; // A message to be sent to the client.
String messageIn; // A message received from the client.
Scanner userInput; // A wrapper for System.in, for reading
if (args.length == 0)
port = DEFAULT_PORT;
else {
try {
port= Integer.parseInt(args[0]);
if (port < 0 || port > 65535)
throw new NumberFormatException();
}
catch (NumberFormatException e) {
System.out.println("Illegal port number, " + args[0]);
return;
}
}
try {
listener = new ServerSocket(port);
System.out.println("Listening on port " + listener.getLocalPort());
connection = listener.accept();
listener.close();
incoming = new BufferedReader(
new InputStreamReader(connection.getInputStream()) );
outgoing = new PrintWriter(connection.getOutputStream());
outgoing.println(HANDSHAKE); // Send handshake to client.
outgoing.flush();
messageIn = incoming.readLine(); // Receive handshake from client.
if (! HANDSHAKE.equals(messageIn) ) {
throw new Exception("Connected program is not a CLChat!");
}
System.out.println("Connected. Waiting for the first message.");
}
catch (Exception e) {
System.out.println("An error occurred while opening connection.");
System.out.println(e.toString());
return;
}
/* Exchange messages with the other end of the connection until one side
or the other closes the connection. This server program waits for
the first message from the client. After that, messages alternate
strictly back and forth. */
try {
userInput = new Scanner(System.in);
System.out.println("NOTE: Enter 'quit' to end the program.\n");
while (true) {
System.out.println("WAITING...");
messageIn = incoming.readLine();
if (messageIn.length() > 0) {
// The first character of the message is a command. If
// the command is CLOSE, then the connection is closed.
// Otherwise, remove the command character from the
// message and proceed.
if (messageIn.charAt(0) == CLOSE) {
System.out.println("Connection closed at other end.");
connection.close();
break;
}
messageIn = messageIn.substring(1);
}
System.out.println("RECEIVED: " + messageIn);
System.out.print("SEND: ");
messageOut = userInput.nextLine();
if (messageOut.equalsIgnoreCase("quit")) {
// User wants to quit. Inform the other side
// of the connection, then close the connection.
outgoing.println(CLOSE);
outgoing.flush(); // Make sure the data is sent!
connection.close();
System.out.println("Connection closed.");
break;
}
outgoing.println(MESSAGE + messageOut);
outgoing.flush(); // Make sure the data is sent!
if (outgoing.checkError()) {
throw new IOException("Error occurred while transmitting message.");
}
}
}
catch (Exception e) {
System.out.println("Sorry, an error has occurred. Connection lost.");
System.out.println("Error: " + e);
System.exit(1);
}
} // end main()
} //end class CLChatServer
import java.net.*;
import java.util.Scanner;
public class CLChatServer {
static final int DEFAULT_PORT = 1728;
static final String HANDSHAKE = "CLChat";
static final char MESSAGE = '0';
static final char CLOSE = '1';
public static void main(String[] args) {
int port; // The port on which the server listens.
ServerSocket listener; // Listens for a connection request.
Socket connection; // For communication with the client.
BufferedReader incoming; // Stream for receiving data from client.
PrintWriter outgoing; // Stream for sending data to client.
String messageOut; // A message to be sent to the client.
String messageIn; // A message received from the client.
Scanner userInput; // A wrapper for System.in, for reading
if (args.length == 0)
port = DEFAULT_PORT;
else {
try {
port= Integer.parseInt(args[0]);
if (port < 0 || port > 65535)
throw new NumberFormatException();
}
catch (NumberFormatException e) {
System.out.println("Illegal port number, " + args[0]);
return;
}
}
try {
listener = new ServerSocket(port);
System.out.println("Listening on port " + listener.getLocalPort());
connection = listener.accept();
listener.close();
incoming = new BufferedReader(
new InputStreamReader(connection.getInputStream()) );
outgoing = new PrintWriter(connection.getOutputStream());
outgoing.println(HANDSHAKE); // Send handshake to client.
outgoing.flush();
messageIn = incoming.readLine(); // Receive handshake from client.
if (! HANDSHAKE.equals(messageIn) ) {
throw new Exception("Connected program is not a CLChat!");
}
System.out.println("Connected. Waiting for the first message.");
}
catch (Exception e) {
System.out.println("An error occurred while opening connection.");
System.out.println(e.toString());
return;
}
/* Exchange messages with the other end of the connection until one side
or the other closes the connection. This server program waits for
the first message from the client. After that, messages alternate
strictly back and forth. */
try {
userInput = new Scanner(System.in);
System.out.println("NOTE: Enter 'quit' to end the program.\n");
while (true) {
System.out.println("WAITING...");
messageIn = incoming.readLine();
if (messageIn.length() > 0) {
// The first character of the message is a command. If
// the command is CLOSE, then the connection is closed.
// Otherwise, remove the command character from the
// message and proceed.
if (messageIn.charAt(0) == CLOSE) {
System.out.println("Connection closed at other end.");
connection.close();
break;
}
messageIn = messageIn.substring(1);
}
System.out.println("RECEIVED: " + messageIn);
System.out.print("SEND: ");
messageOut = userInput.nextLine();
if (messageOut.equalsIgnoreCase("quit")) {
// User wants to quit. Inform the other side
// of the connection, then close the connection.
outgoing.println(CLOSE);
outgoing.flush(); // Make sure the data is sent!
connection.close();
System.out.println("Connection closed.");
break;
}
outgoing.println(MESSAGE + messageOut);
outgoing.flush(); // Make sure the data is sent!
if (outgoing.checkError()) {
throw new IOException("Error occurred while transmitting message.");
}
}
}
catch (Exception e) {
System.out.println("Sorry, an error has occurred. Connection lost.");
System.out.println("Error: " + e);
System.exit(1);
}
} // end main()
} //end class CLChatServer
Client Side Output:
Enter computer name or IP address: VIJAY-PC
Enter port, or press return to use default:1728
Connecting to VIJAY-PC on port 1728
Connected. Enter your first message.
NOTE: Enter 'quit' to end the program.
SEND: hi i am vijay...
WAITING...
RECEIVED: hi i am kumar
SEND: wt dng?
WAITING...
RECEIVED: simply chating with u
SEND: k bye
WAITING...
RECEIVED: bye
SEND: quit
Connection closed.
Server Side Output:
Listening on port 1728
Connected. Waiting for the first message.
NOTE: Enter 'quit' to end the program.
WAITING...
RECEIVED: hi i am vijay...
SEND: hi i am kumar
WAITING...
RECEIVED: wt dng?
SEND: simply chating with u
WAITING...
RECEIVED: k bye
SEND: bye
WAITING...
Connection closed at other end.
Connected. Waiting for the first message.
NOTE: Enter 'quit' to end the program.
WAITING...
RECEIVED: hi i am vijay...
SEND: hi i am kumar
WAITING...
RECEIVED: wt dng?
SEND: simply chating with u
WAITING...
RECEIVED: k bye
SEND: bye
WAITING...
Connection closed at other end.
Related Posts :
- Back to Home »
- Client Server Program »
- Client / Server Chatting Program