안녕하세요 안드로이드 배우고 있는데, 몇가지 여쭤보려고 합니다.
1.
서버는 비쥬얼스튜디오 c언어로 만들었구요.
클라이언트는 adt를 이용해서 java로 만들었습니다.
서버로 문자열을 전송해주는 간단한 프로그램인데
소켓연결조차 안되는지 이유를 모르겟습니다;;
노트북내에서 (자바)서버를 만들고 가상머신으로 돌려봤을땐 잘 됬지만
다른 노트북(C언어)와 apk만들어서 스마트폰에 직접 넣어서 실험할때는 작동이 안되네요;
뭔가 더 추가해야 될게 있나요?
Manifast에선 Internet Permission만 추가해주었습니다.
2.
그리고 Handler를 이용해서 ABC클래서 중간중간에 잘 작동되나 확인하려고
Print메서드에 switch문을 이용하는 Handler를 작성했는데
이것도 작동하지 않습니다..;
--------------MainActivity클래스----------------------
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
@SuppressLint("NewApi") public class MainActivity extends Activity {
Button SendButton;
TextView textView;
public final static int A = 1;
private Handler m_handler = new Handler() {
@SuppressLint("HandlerLeak")
public void handleMessage(android.os.Message msg) {
switch(msg.what) {
case A:
print("잘됨");
break;
}
};
};
@SuppressLint("NewApi") @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
textView = (TextView) findViewById(R.id.textView);
SendButton = (Button)findViewById(R.id.button1);
print("모든 객체 선언됨");
SendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
print("onclick");
ABC ct = new ABC(m_handler);
print("객체생성");
ct.start();
}
});
}
public void print(Object message) {
textView.append(message + "\n");
}
}
--------------ABC클래스(Thread를 이용해 서버에 연결됩니다)----------------------
import java.io.DataOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import android.os.Handler;
import android.os.Message;
public class ABC extends Thread{
public static String SERVER_IP = "172.30.1.12";//컴퓨터의 아이피 주소
public static int SERVER_PORT = 0;
Socket socket;// 소켓 선언
DataOutputStream output;
OutputStream os;
ObjectInputStream ois;
ObjectOutputStream oos;
Message msg = null;
Handler h ;
ABC(Handler handler){
h = handler;
}
public void sendMessage(Socket socket){
try{
os = socket.getOutputStream();
oos = new ObjectOutputStream(os);
String sMsg = "성공?";
oos.writeObject(sMsg);
}
catch(Exception e){
e.printStackTrace();
}
}
public void run() {
try {
msg.what = MainActivity.A;
h.sendMessage(msg);
socket = new Socket(SERVER_IP, SERVER_PORT);
output = new DataOutputStream(socket.getOutputStream());
sendMessage(socket);
} catch (Exception e) {
}
}
}