import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.widgets.Menu;
public class TEST {
protected Shell shell;
private Text txtDiecasprogram;
private Text txtStatusfine;
private int connect_flag =0;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args)
{
try {
TEST window = new TEST();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open()
{
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
private void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("DIECAS");
final Button btnNewButton = new Button(shell, SWT.NONE);
btnNewButton.setBounds(163, 89, 104, 41);
btnNewButton.setText("클라이언트 접속.");
txtDiecasprogram = new Text(shell, SWT.BORDER | SWT.CENTER);
txtDiecasprogram.setText("DIECAS_PROGRAM");
txtDiecasprogram.setBounds(104, 42, 226, 21);
txtStatusfine = new Text(shell, SWT.BORDER);
txtStatusfine.setText("STATUS:FINE");
txtStatusfine.setBounds(104, 171, 226, 81);
btnNewButton.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
if(connect_flag==0)
{
btnNewButton.setText("접속완료");
try
{
Socket socket = new Socket("192.168.0.37", 1470);
// 입력 스트림
// 서버에서 보낸 데이터를 받음
while(true)
{
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// 출력 스트림
// 서버에 데이터를 송신
OutputStream out = socket.getOutputStream();
String line = in.readLine();
System.out.println("서버로 부터의 응답 : "+line);
//현재시간 계산
long time = System.currentTimeMillis();
SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String real_time = dayTime.format(new Date(time));
System.out.println(real_time);
//파일 쓰기
BufferedWriter out1 = new BufferedWriter(new FileWriter("C:/APM_Setup/htdocs/index.html")); //파싱데이터 가져오는부분
BufferedWriter out2 = new BufferedWriter(new FileWriter("C:/APM_Setup/htdocs/database-sensor.txt",true)); //데이터베이스용 자료
out1.write(line);
out1.newLine();
out2.write(line);
out2.write(" - ");
out2.write(real_time);
out2.newLine();
out1.close();
out2.close();
}
}
catch(IOException e1)
{
System.out.println("입출력오류");
}
}
else if(connect_flag==1)
{
connect_flag--;
btnNewButton.setText("클라이언트 접속종료.");
}
}
});
}
}
자바 클라이언트 소스를 만들어서 GUI에 붙여서
버튼을 클릭해서 서버에 접속시키는 프로그램을 만들었는데요..
GUI프로그램을 통해 접속까지는 잘되지만.
그이후에 화면이 멈춰서 일련의 동작을 할 수가없습니다..
하지만 멈춘상태에서 서버에서 클라이언트로 메시지를 보내주면 그 값을 잘 받아옵니다..;
화면이 무슨 이유때문인지 멈춰있는거같은데..
소스를 봐도 해결이안되네요;;
혹시 아시는분 답변부탁드립니다.!
제가 보기에는.. 무한루프부분인데;; 도저히 머리가 안돌아갑니다 ㅠㅠ;
이게 비동기로 짜여진건지.. 아니면 잘못짜서 그런지좀 확인부탁드려요..