0
나는 mysql 데이터베이스에 연결하는 자바 구현 서버에 연결하기위한 응용 프로그램을 만들고, 서버 측에서 모든 것을 확인합니다. 안 드 로이드에서는 서버에 연결할 때마다 메시지를 보낼 수 있지만 응답 소켓을 읽고 닫을 때 문제가 VM에서 스레드를 죽일, google'it 및 소켓 클래스를 작업으로 실행하려고 시도하고 스레드로 나도 스레드에 우선 순위를 부여하려고하지만 심지어 항상 얻을 같은 오류 :VM에 의해 살해 된 안드로이드 클라이언트 소켓
public class ConnectionDB{
public static String ip;
public static int port;
private static ConnectionDB instance = null;
private StringBuilder sb;
private String response = "";
private String data;
public static ConnectionDB getInstance() {
if(instance == null) {
instance = new ConnectionDB();
}
return instance;
}
public String connect(String s_send) throws InterruptedException{
data = s_send;
Thread cThread = new Thread(new clientCon());
cThread.setPriority(Thread.MAX_PRIORITY);
cThread.start();
return response.toString();
}
class clientCon implements Runnable {
private Socket socket = null;
private DataOutputStream dataOutputStream = null;
private DataInputStream dataInputStream = null;
@Override
public void run() {
// TODO Auto-generated method stub
try {
socket = new Socket(ip,port);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
Log.d("sending msg: ",data);
dataOutputStream.writeBytes(data);
dataOutputStream.flush();
dataOutputStream.close();
Log.d("msg sent: ", data);
while ((data = dataInputStream.readLine()) != null) {
Log.d("data from server: ", data);
sb.append(data);
}
Log.d("msg received: ", sb.toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (sb != null){
response = sb.toString();
Log.d("Response from server: ", response);
}else{
Log.d("Response from server is null", "");
}
}
}
: 여기
12-28 18:28:24.769: W/System.err(1342): java.net.SocketException: Socket closed
12-28 18:28:24.769: W/System.err(1342): at org.apache.harmony.luni.platform.OSNetworkSystem.read(Native Method)
12-28 18:28:24.769: W/System.err(1342): at dalvik.system.BlockGuard$WrappedNetworkSystem.read(BlockGuard.java:273)
12-28 18:28:24.769: W/System.err(1342): at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:458)
12-28 18:28:24.769: W/System.err(1342): at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:59)
12-28 18:28:24.769: W/System.err(1342): at java.io.DataInputStream.readLine(DataInputStream.java:310)
12-28 18:28:24.769: W/System.err(1342): at com.example.lightreading.ConnectionDB$clientCon.run(ConnectionDB.java:83)
12-28 18:28:24.769: W/System.err(1342): at java.lang.Thread.run(Thread.java:1019)
내 코드는 스레드를 사용하고 있습니다
}