현재 소스는 아래에 잇습니다. 지금 문제가 elipse에서 에뮬실행시에 에디트텍스트박스에 자신의 ip와 port를 받아서 출력하고 서버에 접속하려고 하는데 어떻게 해야되는 지 몰라서 문의 드립니다.
소스에서 소켓을 이용시에 자신의 ip와 port를 알아내서 에디트박스에서 출력을 해야되는 데,
제가 검색을 해봐서 해봐도, getHost()이런거는 루프백 아이피를 넘겨줘서 127.0.0.0 이런식으로 나와버려서 문의 드립니다.
eclipse를 이용해서 자신의 ip와 port를 알아내고 출력하는 방법 없을 까요? 도움 좀 부탁드립니다 ㅠㅜ
소스-------------------------------------------------------------
package net.npaka.echoserver;
import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.io.*;
import java.net.*;
import android.util.*;
public class Echoserver extends Activity implements View.OnClickListener{
public final static String BR = System.getProperty("line.separator");
public final static String IP = "192.168.0.130";
public Echoserver current;
public EditText edit1,edit2,edit3,edit4;
public EditText edit5,edit6;
public Button btn;
public Socket socket;
public InputStream in;
public OutputStream out;
public final Handler handler=new Handler();
public String txtReceive;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
current=this;
edit1 = (EditText)findViewById(R.id.edit1);
edit2 = (EditText)findViewById(R.id.edit2);
edit3 = (EditText)findViewById(R.id.edit3);
edit4 = (EditText)findViewById(R.id.edit4);
edit5 = (EditText)findViewById(R.id.edit5);
edit6 = (EditText)findViewById(R.id.edit6);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(this);
edit5=new EditText(this);
edit5.setId(1);
edit5.setText("");
edit5.setTextSize(16.0f);
edit5.setTextColor(Color.rgb(0,0,0));
edit6=new EditText(this);
edit6.setId(2);
edit6.setText("");
edit6.setTextSize(16.0f);
edit6.setTextColor(Color.rgb(0,0,0));
(new Thread(){public void run() {
try {
connect(IP,19090);
} catch (Exception e) {
}
}}).start();
}
public void onClick(View v) {
if (v.getId() == R.id.btn) {
try {
if (socket!=null && socket.isConnected()) {
byte[] a=edit1.getText().toString().getBytes("UTF8");
byte[] b=edit2.getText().toString().getBytes("UTF8");
byte[] c=edit3.getText().toString().getBytes("UTF8");
byte[] d=edit4.getText().toString().getBytes("UTF8");
out.write(a);
out.write(b);
out.write(c);
out.write(d);
out.flush();
out.flush();
out.flush();
out.flush();
edit1.setText("",TextView.BufferType.NORMAL);
edit2.setText("",TextView.BufferType.NORMAL);
edit3.setText("",TextView.BufferType.NORMAL);
edit4.setText("",TextView.BufferType.NORMAL);
}
} catch (Exception e) {
handler.post(new Runnable(){
public void run() {
Echoserver.showDialog(current,"","통신 에러입니다 .");
}
});
}
}
}
@SuppressWarnings("unused")
public void connect(String IP,int PORT) {
long size;
txtReceive="";
txtReceive="";
byte[] w=new byte[1024];
byte[] t=new byte[1024];
try {
socket=new Socket(IP,PORT);
in =socket.getInputStream();
out=socket.getOutputStream();
Log.d("EchoServer","connect");
while (socket!=null && socket.isConnected()) {
size=in.read(w);
size=in.read(t);
handler.post(new Runnable(){
public void run() {
edit5.setText(
edit5.getText()+txtReceive);
edit6.setText(
edit6.getText()+txtReceive+BR);
}
});
}
} catch (Exception e) {
handler.post(new Runnable(){
public void run() {
Echoserver.showDialog(current,"","통신 에러입니다 .");
}
});
}
}
public static void showDialog(final Activity activity,String title,String text) {
AlertDialog.Builder ad=new AlertDialog.Builder(activity);
ad.setTitle(title);
ad.setMessage(text);
ad.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
activity.setResult(Activity.RESULT_OK);
}
});
ad.create();
ad.show();
}
}