Network Protocol Java

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class LoopingSocketServer {
  public static void main(String args[]) throws Exception {
    ServerSocket servSocket;
    Socket fromClientSocket;
    int cTosPortNumber = 1777;
    String str;
    servSocket = new ServerSocket(cTosPortNumber);
    System.out.println("Waiting for a connection on " + cTosPortNumber);
    fromClientSocket = servSocket.accept();
    System.out.println("fromClientSocket accepted");
    ObjectOutputStream oos = new ObjectOutputStream(fromClientSocket.getOutputStream());
    ObjectInputStream ois = new ObjectInputStream(fromClientSocket.getInputStream());
    while ((str = (String) ois.readObject()) != null) {
      System.out.println("The message from client:  " + str);
      if (str.equals("bye")) {
        oos.writeObject("bye bye");
        break;
      } else {
        str = "Server returns " + str;
        oos.writeObject(str);
      }
    }
    oos.close();
    fromClientSocket.close();
  }
}