public class Final_ClientActivity extends Activity {
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.TextView01);
중간 생략..
}
class Receiver extends Thread {
중간 생략 ....
Log.e("AA" , in.readUTF());
tv.append(in.readUTF());
}
로그로 찍어보면 in.readUTF 값이 제대로 출력됩니다..
근데.. tv값에 집에 넣으면 오류가발생하네요..?
tv.setText(값) 으로 넣어봐도 에러가 발생하고.. 왜일까요 ..?
아래는 풀 소스 올려드립니다..
package com.client;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ConnectException;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
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;
public class Final_ClientActivity extends Activity {
/** Called when the activity is first created. */
TextView tv;
EditText et;
final String serverIp = "210.117.134.86";
Socket socket;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.Button01);
tv = (TextView)findViewById(R.id.TextView01);
et = (EditText)findViewById(R.id.EditText01);
try {
tv.setText("서버에서 연결중입니다. 서버IP : " + serverIp);
socket = new Socket(serverIp, 7777);
Log.e("Started", " dd" );
Receiver receiver = new Receiver(socket, tv);
receiver.setDaemon(true);
receiver.start();
final Sender sender = new Sender(socket);
//sender.start();
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//sender.start();
try {
DataInputStream in;
DataOutputStream out;
String name;
out = new DataOutputStream(socket.getOutputStream());
name = "[" + socket.getInetAddress() + ":" + socket.getPort() + "]";
out.writeUTF("Client : " + name + et.getText());
} catch (IOException e) {
e.printStackTrace();
}
}
});
} catch (ConnectException ce) {
ce.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
class Sender extends Thread {
Socket socket;
DataOutputStream out;
String name;
Sender(Socket socket) {
this.socket = socket;
try {
out = new DataOutputStream(socket.getOutputStream());
name = "[" + socket.getInetAddress() + ":" + socket.getPort() + "]";
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
//Scanner scanner = new Scanner(System.in);
/*while (out != null) {
try {
out.writeUTF("Client : " + name + et.getText());
} catch (IOException e) {
e.printStackTrace();
}
}*/
}
}
class Receiver extends Thread {
DataOutputStream out;
DataInputStream in;
Socket socket;
String recv;
TextView tv;
Receiver(Socket socket, TextView tv) {
this.socket = socket;
this.tv = tv;
try {
in = new DataInputStream(socket.getInputStream());
Log.e("A" , in.readUTF());
} catch (IOException e) {
//e.printStackTrace();
}
}
@Override
public void run(){
while (in != null) {
try {
Log.e("AA" , in.readUTF());
tv.append(in.readUTF());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
encoding type가 utf-8로 되어 있나요? 그리고 에러가 발생하시면
로그를 첨부하셔야죠^^