Ciao, hai ragione sul metodo "writeUTF", scrive 2 btye in più e nel mio caso non va bene; quindi ho risolto in questo modo :
codice:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
 DataOutputStream dos = new DataOutputStream(baos);
 char[] header = new char[]{'H','E','L','O'}; 
for(int i = 0;i<4;i++){ dos.write((int)header[i]); } 
dos.write(ip.getAddress()); 
dos.write(toByte(port));
Grazie