안드로이드 개발 질문/답변
(글 수 45,052)
클라이언트입니다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket;
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;
public class AsdasdActivity extends Activity {
private String html = "";
private Handler mHandler;
private Socket socket;
private String name;
private BufferedReader networkReader;
private BufferedWriter networkWriter;
private String ip = "xxx.xxx.xxx.xxx"; // IP
private int port = 9999; // PORT번호
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler = new Handler();
try {
setSocket(ip, port);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
checkUpdate.start();
final EditText et = (EditText) findViewById(R.id.EditText01);
Button btn = (Button) findViewById(R.id.Button01);
final TextView tv = (TextView) findViewById(R.id.TextView01);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (et.getText().toString() != null
|| !et.getText().toString().equals("")) {
PrintWriter out = new PrintWriter(networkWriter, true);
String return_msg = et.getText().toString();
out.println(return_msg);
}
}
});
}
private Thread checkUpdate = new Thread() {
public void run() {
try {
String line;
Log.w("ChattingStart", "Start Thread");
while (true) {
Log.w("Chatting is running", "chatting is running");
line = networkReader.readLine();
html = line;
mHandler.post(showUpdate);
}
} catch (Exception e) {
}
}
};
private Runnable showUpdate = new Runnable() {
public void run() {
Toast.makeText(AsdasdActivity.this, "Coming word: " + html,
Toast.LENGTH_SHORT).show();
}
};
public void setSocket(String ip, int port) throws IOException {
try {
socket = new Socket(ip, port);
networkWriter =
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
networkReader =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
System.out.println(e);
e.printStackTrace();
}
}
}
서버입니다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;
public class TCPS implements Runnable {
public static final int ServerPort = 9999;
public static final String ServerIP = "xxx.xxx.xxx.xxx";
@Override
public void run() {
// TODO Auto-generated method stub
try {
System.out.println("S: Connecting...");
ServerSocket serverSocket = new ServerSocket(ServerPort);
while (true) {
Socket client = serverSocket.accept();
System.out.println("S: Receiving...");
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));
String str = in.readLine();
System.out.println("S: Received: '" + str + "'");
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())),true);
out.println("Server Received " + str);
} catch (Exception e) {
System.out.println("S: Error");
e.printStackTrace();
} finally {
client.close();
System.out.println("S: Done.");
}
}
} catch (Exception e) {
System.out.println("S: Error");
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread desktopServerThread = new Thread(new TCPS());
desktopServerThread.start();
}
}
로그켓입니다
11-17 19:12:57.839: D/skia(2476): SHAPER: stream created /data/data/com.jungle.app.fonts/tmp/SJbangu.ttf.. 0x101C78 11-17 19:13:07.929: I/System.out(2476): java.net.UnknownHostException: xxx.xxx.xxx.xxx 11-17 19:13:07.929: W/System.err(2476): java.net.UnknownHostException: xxx.xxx.xxx.xxx 11-17 19:13:07.929: W/System.err(2476): at java.net.InetAddress.lookupHostByName(InetAddress.java:506) 11-17 19:13:07.939: W/System.err(2476): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294) 11-17 19:13:07.939: W/System.err(2476): at java.net.InetAddress.getAllByName(InetAddress.java:256) 11-17 19:13:07.939: W/System.err(2476): at java.net.Socket.tryAllAddresses(Socket.java:130) 11-17 19:13:07.939: W/System.err(2476): at java.net.Socket.<init>(Socket.java:209) 11-17 19:13:07.939: W/System.err(2476): at java.net.Socket.<init>(Socket.java:176) 11-17 19:13:07.939: W/System.err(2476): at asd.asd.AsdasdActivity.setSocket(AsdasdActivity.java:103) 11-17 19:13:07.939: W/System.err(2476): at asd.asd.AsdasdActivity.onCreate(AsdasdActivity.java:51) 11-17 19:13:07.939: W/System.err(2476): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-17 19:13:07.939: W/System.err(2476): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 11-17 19:13:07.939: W/System.err(2476): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 11-17 19:13:07.939: W/System.err(2476): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 11-17 19:13:07.939: W/System.err(2476): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 11-17 19:13:07.939: W/System.err(2476): at android.os.Handler.dispatchMessage(Handler.java:99) 11-17 19:13:07.939: W/System.err(2476): at android.os.Looper.loop(Looper.java:130) 11-17 19:13:07.939: W/System.err(2476): at android.app.ActivityThread.main(ActivityThread.java:3683) 11-17 19:13:07.939: W/System.err(2476): at java.lang.reflect.Method.invokeNative(Native Method) 11-17 19:13:07.939: W/System.err(2476): at java.lang.reflect.Method.invoke(Method.java:507) 11-17 19:13:07.939: W/System.err(2476): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 11-17 19:13:07.939: W/System.err(2476): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 11-17 19:13:07.939: W/System.err(2476): at dalvik.system.NativeStart.main(Native Method) 11-17 19:13:07.949: W/ChattingStart(2476): Start Thread 11-17 19:13:07.949: W/Chatting is running(2476): chatting is running 11-17 19:13:09.969: W/dalvikvm(2476): threadid=1: thread exiting with uncaught exception (group=0x40018560) 11-17 19:13:09.969: E/AndroidRuntime(2476): FATAL EXCEPTION: main 11-17 19:13:09.969: E/AndroidRuntime(2476): java.lang.NullPointerException 11-17 19:13:09.969: E/AndroidRuntime(2476): at java.io.Writer.<init>(Writer.java:66) 11-17 19:13:09.969: E/AndroidRuntime(2476): at java.io.PrintWriter.<init>(PrintWriter.java:114) 11-17 19:13:09.969: E/AndroidRuntime(2476): at asd.asd.AsdasdActivity$3.onClick(AsdasdActivity.java:68) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.view.View.performClick(View.java:2492) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.view.View$PerformClick.run(View.java:9087) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.os.Handler.handleCallback(Handler.java:587) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.os.Handler.dispatchMessage(Handler.java:92) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.os.Looper.loop(Looper.java:130) 11-17 19:13:09.969: E/AndroidRuntime(2476): at android.app.ActivityThread.main(ActivityThread.java:3683) 11-17 19:13:09.969: E/AndroidRuntime(2476): at java.lang.reflect.Method.invokeNative(Native Method) 11-17 19:13:09.969: E/AndroidRuntime(2476): at java.lang.reflect.Method.invoke(Method.java:507) 11-17 19:13:09.969: E/AndroidRuntime(2476): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 11-17 19:13:09.969: E/AndroidRuntime(2476): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 11-17 19:13:09.969: E/AndroidRuntime(2476): at dalvik.system.NativeStart.main(Native Method)
머가문제인가요 ㅠㅠㅠ
예제그대로배껴온건대 ...
아이피주소때문에인것같긴한ㄷ ..
아이피주소를 제아이피로해도 안되네요 ㄷㄷㄷ
머가문제인가요




문제는 알고 계신것 같네요.
저도 집에 들어오는 매가패스로 서버돌리면 좋겠어요..