Ho scritto questo semplice codice che dovrebbe semplicemente far passare una stringa dal client al server e viceversa. Però si blocca tutto, qualcuno sa dirmi il motivo. Grazie in anticipo.

CLIENT
package Chat;

import java.io.*;
import java.net.*;

public class Client {

private static Socket sc;

public Client(){

}

public String send(String msg) throws IOException {
sc=new Socket("localhost",7777);
BufferedReader in = new BufferedReader(
new InputStreamReader(sc.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(
sc.getOutputStream()), true);
out.println(msg);



while (!in.readLine().equals(null))
{
System.out.println("client");

}

out.close();
in.close();
sc.close();
return "ciao";
}
}

SERVER
package Chat;
import java.io.*;
import java.net.*;
/**
*
* @author cellarosi
*/
public class ChatServer {

private static ServerSocket ss;
private static Socket sc;
public static void main(String[] args){

try {
ss = new ServerSocket(7777);
sc=ss.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(sc.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(
sc.getOutputStream()), true);


while (!in.readLine().equals(null))
{
System.out.println("server");

}



out.println("ciao");
out.close();
in.close();
sc.close();
ss.close();
} catch (IOException ex) {
ex.printStackTrace();
}

}

}