Okay so I found some code online to create a simple chat server and I was trying to teach myself with it. I have a few questions though.
First off here is the code:
ChatServer.java
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ChatServer
{
// set default port value here
public static final int DEFAULT_PORT = 9800;
//user can change port with optional command line argument
public static void main (String[] args) throws UnknownHostException
{
// variables
int port = DEFAULT_PORT;
ServerSocket serverSocket = null;
Socket socket = null;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a port (enter to use default): ");
String port_s = keyboard.nextLine();
try
{
// change the port number from the default one
if(!port_s.equals(""))
port = Integer.parseInt(port_s);
InetAddress thisIp = InetAddress.getLocalHost();
System.out.println("\nServer info: \n");
System.out.println("IP: "+thisIp.getHostAddress());
System.out.println("Port: " + port);
}
catch(NumberFormatException nfe)// if the user entered something other than a number
{
System.err.println("Enter a valid number for port!");
System.exit(0);
}
try
{
serverSocket = new ServerSocket(port);
while(true)
{
socket = serverSocket.accept();
ChatHandler handler = new ChatHandler(socket);
handler.start();
}
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
finally
{
try{serverSocket.close();}
catch(IOException ioe){ioe.printStackTrace();}
}
}
}
ChatHandler.java:
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ChatServer
{
// set default port value here
public static final int DEFAULT_PORT = 9800;
//user can change port with optional command line argument
public static void main (String[] args) throws UnknownHostException
{
// variables
int port = DEFAULT_PORT;
ServerSocket serverSocket = null;
Socket socket = null;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a port (enter to use default): ");
String port_s = keyboard.nextLine();
try
{
// change the port number from the default one
if(!port_s.equals(""))
port = Integer.parseInt(port_s);
InetAddress thisIp = InetAddress.getLocalHost();
System.out.println("\nServer info: \n");
System.out.println("IP: "+thisIp.getHostAddress());
System.out.println("Port: " + port);
}
catch(NumberFormatException nfe)// if the user entered something other than a number
{
System.err.println("Enter a valid number for port!");
System.exit(0);
}
try
{
serverSocket = new ServerSocket(port);
while(true)
{
socket = serverSocket.accept();
ChatHandler handler = new ChatHandler(socket);
handler.start();
}
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
finally
{
try{serverSocket.close();}
catch(IOException ioe){ioe.printStackTrace();}
}
}
}
My Questions:
1) How would I print something once a person enters the chat (telnets domain [port])
2) I would like to use this to ask each person as they enter for a username they would like to use
3) Is that ip address printing correctly for other people? I think it is merely printing my local ipaddress that is associated with the router (not too familiar with ip addresses and stuff like that)
4) More general question: What is the difference between a vector and ArrayList?
Thanks a lot guys.