Я написал функцию для отправки и получения сообщений с сервера, например:
//Send mess to server through socket
public boolean send_Message_service(String mess) throws IOException{
Log.i("debug", "Connection status: "+String.valueOf(this.clientSocket.isBound()));
boolean rs=false;
//Send mess toi server
BufferedReader in = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(this.clientSocket.getOutputStream())), true);
out.println(mess);
//Receive mess from server
String mess_From_Server=in.readLine();
if(mess_From_Server.equalsIgnoreCase("success")){
rs=true;
}
else{
rs=false;
}
return rs;
}
Эта функция может отправлять сообщения на сервер, но не может получать сообщения от сервера. Когда я запускаю его на своем телефоне, это занимает много времени и принудительное закрытие!
Вот логкат:
10-11 12:17:35.201: INFO/global(279): Default buffer size used in BufferedWriter constructor. It would be better to be explicit if an 8k-char buffer is required.
10-11 12:21:26.321: DEBUG/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol
А вот код сервера (работает на Java, а не на Android):
int receiveMsgSize;//Size of received message
byte[] receiveBuf= new byte[100]; //Receive Buffer
try {
ObjectOutputStream oos = new ObjectOutputStream(this.clientSocket.getOutputStream());
InputStream in;
in = this.clientSocket.getInputStream();
while((receiveMsgSize=in.read(receiveBuf))!=-1){
String mess=new String(receiveBuf,0,receiveMsgSize);
System.out.println(mess.length());
System.out.println(mess);
}
oos.writeObject("success");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}