I am working on sending and receiving from clients and servers in java, and am stumped at the moment. the client    socket  is to   contact a   server  at  “localhost” port    4321.   The client  will    receive a
string  from    the server  and alternate   spelling    the contents    of  this    string  with    the server. For example,
given   the string  “Bye    Bye”,   the client  (which  always  begins  sending the first   letter) sends   “B”,    receives
“y”,    sends   “e”,    receives    “   ”,  sends   “B”,    receives    “y”,    sends   “e”,    and receives    “done!”,    which   is  the string
that    either  client  or  server  will    send    after   the last    letter  from    the original    string  is  received.   After   “done!” 
is  transmitted,    both    client  and server  close   their   communications. How would i go about getting the first string and then going back and forth sending and reciving letters that make the string, and when finished either send or get done!?
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Program2 {
public static void goClient() throws UnknownHostException, IOException{
String server = "localhost";
int port = 4321;
Socket socket = new Socket(server, port);
InputStream inStream = socket.getInputStream();
OutputStream outStream = socket.getOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true);
String rec = "";
if(in.hasNext()){
    rec = in.nextLine();
}
char[] array = new char[rec.length()];
for(int i = 0; i < rec.length(); i++){
    array[i] = rec.charAt(i);
}
while(in.hasNext()){
    for(int x = 0; x < array.length + 1; x+=2){
    String str = in.nextLine();
    str = Character.toString(array[x]);
    out.println(str);
    }
    in.close();
    socket.close();
}
}
}