네트워킹 중 가장 기본인 소켓에 관한 내용임.
일단 시작전에 네트워킹 관련된것은 반드시 쓰레드 사용과 + 인터넷권한 을 줘야한다는 두가지 전제가 있다.
내용을 따라가다보면 피시IP주소가 필요한데 내 피시 IP주소 보는법은 링크 참조.
http://blog.naver.com/pandekten5/220622082174
00. 역시나 일단 시작해보자.
01. 버튼을 누르면 작동되게 버튼을 만들어보자. 온클릭 속성을 줘서 간단히 해보자.
02. 작업결과를 텍스트뷰에 나타나게 해보자. 하지만 구별되기 위해 색상을 줘보자.
03. Manifest에서 인터넷권한을 주자.
04. 메인스크립에다 메인소스를 주자.
package com.example.joey.mysocket;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
TextView textView;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
}
public void button01(View v) {
ConnectThread thread = new ConnectThread();
thread.start();
}
class ConnectThread extends Thread {
public void run() {
String host = "172.30.1.4"; //내 피시 IP주소
int port = 5001;
try {
Socket socket = new Socket(host, port);
println("서버로 연결되었습니다. : " + host + ", " + port);
String output = "Hello";
ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
outputStream.writeObject(output);
outputStream.flush();
println("서버로 보낸 데이터 : " + output);
ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream());
Object input = inputStream.readObject();
println("서버로부터 받은 데이터 : " + input);
inputStream.close();
outputStream.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void println(final String data){
handler.post(new Runnable() {
@Override
public void run() {
textView.append(data + "\n");
}
});
}
}
}
05. 실행시켜보자.
06. 서버를 만들지 않고 시작해서인지, 텍스트뷰로 나타나지않는다.