//핸드폰용 XML소스
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
/>
<TextView
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</LinearLayout>
//핸드폰용 자바소스
package exam.AndSocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
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;
import android.widget.Toast;
public class AndSocket extends Activity {
private String return_msg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
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("")) {
TCPclient tp = new TCPclient(et.getText().toString());
tp.run();
Toast t = Toast.makeText(getApplicationContext(),
return_msg, Toast.LENGTH_LONG);
t.show();
tv.setText("Client : : "+return_msg);
}
}
});
}
private class TCPclient implements Runnable {
private static final String serverIP = "172.16.11.137"; // <===== 서버 컴터용 아이피
private static final int serverPort = 9002; // ex
private String msg;
// private String return_msg;
public TCPclient(String _msg) {
this.msg = _msg;
}
public void run() {
// TODO Auto-generated method stub
try {
InetAddress serverAddr = InetAddress.getByName(serverIP);
Log.d("TCP", "C: Connecting...");
Socket socket = new Socket(serverAddr, serverPort);
try {
Log.d("TCP", "C: Sending: '" + msg + "'");
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
// 소켓을 통해 출력 스트림을 받아옵니다.
true);
out.println(msg);
Log.d("TCP", "C: Sent.");
Log.d("TCP", "C: Done.");
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
return_msg = in.readLine();
Log.d("TCP", "C: Server send to me this message -->"
+ return_msg);
} catch (Exception e) {
Log.e("TCP", "C: Error1", e);
} finally {
socket.close();
}
} catch (Exception e) {
Log.e("TCP", "C: Error2", e);
}
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//서버용 컴터용
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.ServerSocket;
import java.net.Socket;
public class Server implements Runnable {
public static final int ServerPort = 9002; // ex: 5555
public static final String ServerIP = "172.16.11.137"; // <=======서버 컴터 아이디 써습니다
@Override
public void run() {
// TODO Auto-generated method stub
try{
System.out.println("Server: Connecting...");
ServerSocket serverSocket = new ServerSocket(ServerPort);
while (true) {
Socket client = serverSocket.accept()
;
// 서버 소켓으로 연결요청이 들어오면 연결 맺고 클라이언트 소켓을 생성하고 리턴
System.out.println("Server: Receiving...");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
// 데이터 수신을 위한 입력 스트림 생성
String str = in.readLine();
System.out.println("Server: Received: '" + str + "'");
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);
// 데이터 송신에 사용할 출력 스트림 생성
out.println("Server Received "+ str);
} catch(Exception e) {
System.out.println("Server: Error");
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
System.out.println("Server: Done.");
System.out.println("Server: Done.");
}
}
} catch (Exception e) {
System.out.println("Server: Error");
e.printStackTrace();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread desktopServerThread = new Thread(new Server());
desktopServerThread.start();
}
}
///////////////////////////////////////////////////////////////////////////
위에 대로 하면 서버 컴퓨터에 이클립스에
connecting.... 이것만 뜨고 더이상 진행이안되고
핸드폰에서 원하는 내용 에디트텍스트에 입력하고 버튼을 누르면
client :: null
이렇게만 되고 아무 진행이 안되는것 같습니다..ㅜ
메인페스트 퍼미션 넣어줬습니다.