안드로이드 개발 질문/답변
(글 수 45,052)
=========================================클라이언트 코드 ======================================
package org.socket;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import android.util.Log;
public class socketClient {
public socketClient ( String Ip , int port , String Msg ) {
try{
String serverIp =Ip;
Log.v("SocketClient","서버에 연결중입니다. 서버 IP :" +serverIp);
Socket socket = new Socket(serverIp ,port);
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
Log.v("SocketClient","데이터 전송 시작하겠습니다.");
Thread.sleep(1000);
dos.writeUTF(Msg);
Thread.sleep(1000);
Log.v("SocketClient","서버와의 연결을 종료합니다");
dos.close();
out.close();
}catch(Exception e){
Log.v("socketError" , e.toString());
e.printStackTrace();
}
}
}
===========================서버코드 =======================================
package org.socketServer;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class Android_socket_ServerActivity extends Activity {
TextView curIP_tv ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String curIP =getLocalIpAddress();
curIP_tv = (TextView) findViewById(R.id.curIP);
curIP_tv.setText(curIP);
Thread android_sockServer = new Thread(new socketServer(7878 , getBaseContext()));
android_sockServer.start();
}
static String getLocalIpAddress()
{
final String IP_NONE = "N/A";
final String WIFI_DEVICE_PREFIX = "eth";
String LocalIP = IP_NONE;
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
if( LocalIP.equals(IP_NONE) )
LocalIP = inetAddress.getHostAddress().toString();
else if( intf.getName().startsWith(WIFI_DEVICE_PREFIX) )
LocalIP = inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException e) {
Log.e("DEBUG_TAG", "getLocalIpAddress Exception:"+e.toString());
}
return LocalIP;
}
}
========================현재 이렇게 코드가 짜여져있는데요
실행을 해보니까
TimeOutException이 계속적으로뜹니다.
이유가 뭔가 해서 찾아보니
서버의 IP주소를 반환하는
서버는 getLocalAddress()에서 반환되는값이
3g일때는 10.0.0.5 이런식이고
WIFI 일때는 fe80::d217:6aff:fe73:5ca1%wlan0
이렇게 반환됩니다.
서버의 IP를 못잡아서 자꾸 TimeOutException이 뜨는거같은데
해결방법이 없을까요?
아니면 ,, 안드로이드를 서버로 사용할때 주의해야 할 것들 같은거 없나요 ㅜㅜ
도오와주시입쇼 ㅜㅜ