안드로이드 소켓통신을 하려고 하는데요. 안되네요.;;; 뭐가 틀린지도 잘 모르겠고.. 도와주세요 요래 프로젝트를 두개 만들어서 썼는데 이게 맞는건가요??

SocketEx 코드는 요거

package com.example.socketex;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.RelativeLayout.LayoutParams;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

// 소켓통신
public class SocketEx extends Activity
implements View.OnClickListener{
private final static String BR=// 개행
System.getProperty("line.separator");
private final static String IP=// IP 주소 지정(1)
"192.168.1.109"; // IP

private SocketEx current; // 현재
private TextView lblReceive; //수신라벨
private EditText edtSend; //송신 텍스트 박스
private Button btnSend; // 송신 버튼

private Socket socket; //소켓
private InputStream in; // 입력 스트림
private OutputStream out;//출력스트림

private final Handler handler=new Handler();// 핸들러(6)
private String txtReceive;//수신 텍스트

//초기화
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
current=this;

//레이아웃의 생성(8)
RelativeLayout layout=new RelativeLayout(this);
layout.setBackgroundColor(Color.rgb(255,255,255));
setContentView(layout);

//수신 라벨의 생성
lblReceive=new TextView(this);
lblReceive.setId(1); //(9)
lblReceive.setText("");
lblReceive.setTextSize(16.0f);
lblReceive.setTextColor(Color.rgb(0, 0, 0));
RelativeLayout.LayoutParams param1=//(9)
new RelativeLayout.LayoutParams(320,400);
lblReceive.setLayoutParams(param1);
layout.addView(lblReceive);

//송신 텍스트 박스의 생성
edtSend=new EditText(this);
edtSend.setId(2);//(9)
edtSend.setText("",TextView.BufferType.NORMAL);
RelativeLayout.LayoutParams param2=//(9)
new RelativeLayout.LayoutParams(200,50);
param2.addRule(RelativeLayout.BELOW,1);
edtSend.setLayoutParams(param2);
layout.addView(edtSend);

//송신 버튼의 생성
btnSend=new Button(this);
btnSend.setText("송신");
btnSend.setOnClickListener(this);
RelativeLayout.LayoutParams param3=//(9)
new RelativeLayout.LayoutParams(200,50);
param3.addRule(RelativeLayout.BELOW,1);
param3.addRule(RelativeLayout.RIGHT_OF,2);
btnSend.setLayoutParams(param3);
layout.addView(btnSend);

//스레드 생성(2)
(new Thread(){public void run(){
try{
connect(IP,8080);
}catch(Exception e){
}
}}).start();
}

//접속
private void connect(String ip,int port){
int size;
byte[] w=new byte[1024];
txtReceive="";
try{
//소켓접속(3)
socket=new Socket(ip,port);
in=socket.getInputStream();
out=socket.getOutputStream();

//수신 반복 루프(4)
while(socket!=null&&socket.isConnected()){
//데이터수신(5)
size=in.read(w);
if(size<=0) continue;
txtReceive=new String(w,0,size,"UTF-8");

//핸들러에 의한 사용자 인터페이스 조작(6)
handler.post(new Runnable(){
public void run(){
//라벨의 문자열 추가
lblReceive.setText(lblReceive.getText()+txtReceive+BR);
}
});
}
} catch(Exception e){
handler.post(new Runnable(){
public void run(){
SocketEx.showDialog(current, "","통신에러입니다");
}
});
}
}

//버튼 클릭 이벤트 처리
public void onClick(View v){
if(v==btnSend){
try{
//데이터 송신(7)
if(socket!=null&&socket.isConnected()){
byte[] w=edtSend.getText().toString().getBytes("UTF8");
out.write(w);
out.flush();
edtSend.setText("",TextView.BufferType.NORMAL);
}
} catch(Exception e){
handler.post(new Runnable(){
public void run(){
SocketEx.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();
}
}

ChatServer 코드는

import java.io.*;
import java.net.*;
import java.util.*;

//채팅 서버
public class ChatServer {

public void start(int port){
ServerSocket server;
Socket socket;
ChatServerThread thread;

try{
server = new ServerSocket(port);
System.err.println("채팅서버 실행 시작:"+port);
while(true){
try{
socket = server.accept();

thread = new ChatServerThread(socket);
thread.start();

}catch (IOException e){
}
}
} catch(IOException e){
System.err.println(e);
}
}


public static void main(String[] args){
ChatServer server = new ChatServer();
server.start(8080);
}
}

ChatServerThread 코드는

import java.io.*;
import java.net.*;
import java.util.*;

public class ChatServerThread extends Thread{
private static List<ChatServerThread> threads = new ArrayList<ChatServerThread>();
private Socket socket;

public ChatServerThread(Socket socket){
super();
this.socket = socket;
threads.add(this);
}

public void run(){
InputStream in = null;
String message;
int size;
byte[] w = new byte[10240];
try{
in=socket.getInputStream();
while(true){
try{
size = in.read(w);

if(size<=0) throw new IOException();

message = new String(w,0,size,"UTF8");

sendMessageAll(message);
} catch(IOException e){
socket.close();
threads.remove(this);
return;
}
}
} catch(IOException e){
System.err.println(e);
}
}

public void sendMessageAll(String message){
ChatServerThread thread;
for(int i=0; i < threads.size(); i++){
thread = (ChatServerThread)threads.get(i);
if(thread.isAlive()) thread.sendMessage(this,message);
}
System.out.println(message);
}

public void sendMessage(ChatServerThread talker,String message){
try{
OutputStream out = socket.getOutputStream();
byte[] w =message.getBytes("UTF8");
out.write(w);
out.flush();
} catch (IOException e){

}
}

}

요거 입니다.

실행을 시키면 이런 에러가 뜨는데요.

왜이럴까요.. 알려주시면 평생 감사하겠습니다.