마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서버와 통신이 안됩니다.

0 추천

안녕하세요 안드로이드 배우고 있는데, 몇가지 여쭤보려고 합니다.

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) {
 
}
 
}
}
익명사용자 님이 2013년 8월 13일 질문

1개의 답변

0 추천
1. 노트북과 smart phone 의 ap 가 같은지 확인 되었는지요?

2. 서버 포트가 0 ??? 이네요 8888 같은걸로 주세요
aucd29 (218,390 포인트) 님이 2013년 8월 13일 답변
아 포트번호는 5000으로 한번 시험해 보았지만 안됩니다ㅠㅠ
ap는 무엇인가요..?
ap = access point = wifi 공유기 같은 계열의 기기
...