package
com.example.t1.unknown;
import
android.os.Environment;
import
android.os.Handler;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.TextView;
import
android.widget.Toast;
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.DataInputStream;
import
java.io.DataOutputStream;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.FileReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
import
java.io.PrintWriter;
import
java.net.Socket;
import
java.util.Scanner;
public
class
Unknown
extends
AppCompatActivity {
TextView textView01;
Handler handler;
private
Socket socket;
public
static
String ip =
"203.234.62.113"
;
public
static
int
port =
30001
;
EditText edit, edit2, edit_ip, edit_port;
public
static
String msg;
String mRoot;
public
static
boolean
Enable =
false
;
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.unknown);
edit_ip = (EditText) findViewById(R.id.editText1);
edit_port = (EditText) findViewById(R.id.editText2);
edit = (EditText) findViewById(R.id.editText3);
edit2 = (EditText) findViewById(R.id.editText4);
textView01 = (TextView) findViewById(R.id.text);
Log.i(
"dsem_log"
,
"oncreate start"
);
Button button01 = (Button) findViewById(R.id.connect);
button01.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
Log.i(
"dsem_log"
,
"connect button clicked"
);
if
(Enable ==
false
) {
ip = edit_ip.getText().toString();
Log.i(
"dsem_log"
, ip);
port = Integer.parseInt(edit_port.getText().toString());
Log.i(
"dsem_log"
, String.valueOf(port));
connect();
Enable =
true
;
RequestThread rt =
new
RequestThread();
rt.start();
SendThread st =
new
SendThread();
st.start();
}
}
});
textView01 = (TextView) findViewById(R.id.text);
Button button02 = (Button) findViewById(R.id.exit);
button02.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
Enable =
false
;
try
{
socket.close();
Log.i(
"dsem_log"
,
"소켓 닫음"
);
}
catch
(IOException e) {
e.printStackTrace();
}
Log.i(
"dsem_log"
,
"무한루프 종료"
);
}
});
Button button03 = (Button) findViewById(R.id.send);
button03.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
String str = edit.getText().toString();
String Filedata;
try
{
Log.i(
"dsem_log"
,
"두번째이상 클릭"
);
str = edit.getText().toString();
PrintWriter out =
new
PrintWriter(
new
BufferedWriter(
new
OutputStreamWriter(socket.getOutputStream(),
"MS949"
)),
true
);
out.println(str);
out.flush();
mRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
File file =
new
File(mRoot+
"/"
+str);
FileReader fr =
null
;
BufferedReader in =
null
;
PrintWriter out2 =
new
PrintWriter(
new
BufferedWriter(
new
OutputStreamWriter(socket.getOutputStream(),
"MS949"
)),
true
);
Log.i(
"dsem_log"
,
"두번째이상 클릭"
);
int
c;
try
{
Log.i(
"dsem_log"
,
"두번째이상 클릭"
);
fr =
new
FileReader(file);
in =
new
BufferedReader(fr);
while
((c = in.read()) != -
1
) {
out2.write((
char
)c);
out2.println(c);
Log.i(
"dsem_log"
,
"c"
);
out2.flush();
Log.i(
"dsem_log"
,
"두번째이상 클릭"
);
}
in.close();
fr.close();
out.close();
out2.close();
}
catch
(IOException e) {
}
}
catch
(IOException e) {
Log.i(
"dsem_log"
,
"에러 10"
);
}
}
});
handler =
new
Handler();
}
public
void
connect() {
Log.i(
"dsem_log"
, String.valueOf(Enable));
if
(Enable==
true
)
{
try
{
socket =
new
Socket(ip,port);
Log.i(
"dsem_log"
,
"서버열림"
);
}
catch
(Exception ex) {
Log.e(
"dsem_log"
, ex.getMessage());
}
}
}
class
SendThread
extends
Thread {
public
void
run() {
while
(Enable==
true
) {
try
{
Log.i(
"dsem_log"
,
"버퍼라이터 정의"
);
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(socket.getInputStream(),
"MS949"
));
Log.i(
"dsem_log"
,
"리드라인 시작"
);
msg =
new
String(br.readLine());
Log.i(
"dsem_log"
,
"리드라인 끝, 읽어온 버퍼:"
+ msg);
}
catch
(Exception ex) {
Log.i(
"dsem_log"
,
"리드라인 오류 또는 타임아웃"
);
connect();
Log.i(
"dsem_log"
,
"소켓 재생성 완료"
);
}
}
}
}
class
RequestThread
extends
Thread {
public
void
run() {
while
(Enable==
true
) {
try
{
Thread.sleep(
100
);
}
catch
(InterruptedException e) {
e.printStackTrace();
}
if
(msg !=
null
) {
Log.i(
"dsem_log"
,
"포스트 보냄"
);
handler.post(
new
TextRunnable(msg));
msg =
null
;
}
}
}
}
class
TextRunnable
implements
Runnable {
String mText;
public
TextRunnable(String text) {
mText = text;
}
public
void
run() {
Log.i(
"dsem_log"
,
"핸들러-텍스트 바꿈 :"
+ mText);
Log.i(
"dsem_log"
,
"현재 버퍼 :"
+ msg);
textView01.setText(mText);
}
}
}