클라이언트쪽으로 오늘의 운세를 보내주는 서버
브라우저와 HTTP 통신을 위해서는 응답시 HTTP 규격에 정해진 방식대로 데이터를 전송
시작라인 : 프로토콜버전 응답코드 응답메세지
헤더
헤더
헤더
[공백한줄]
바디 : 전송할 메세지
HTTP/1.1 200 OK\r\n
a: b\r\n
c: d\r\n
\r\n
aaaa
소스
public static void main(String[] args) {
try {
String[] data = {
"복권 1등 당첨 운입니다.",
"동쪽으로 가면 귀인을 만납니다.",
"축하합니다. 자율학습 9시 당첨입니다.",
"갈수록 얼굴이 멋있어 집니다.",
"살 빠집니다.",
"5월에 결혼할 운입니다.",
"비트코인이 2000만원 돌파..",
"비트코인 100만원 ^^",
"기계 오류로 출석이 취소되었습니다.",
"집에 가다 넘어짐 ^^ 야호~~"
};
Random r = new Random();
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
System.out.println("요청한 사용자의 보내준 데이터 확인하기");
System.out.println("=============================");
BufferedReader br = new BufferedReader(
new InputStreamReader(s.getInputStream())
);
// 시작라인의 정보
// GET/POST URI ProtocolVersion
// GET : GET /board/update?no=1
// POST : /board/update
// body : no=1
String reqStartLine = br.readLine();
String reqHeader = "";
while(true) {
String line = br.readLine();
if(line.equals("")) break;
reqHeader += line + "";
}
String msg = "<html>" +
" <head>" +
" <style>" +
" div {" +
" font-size: 10px;" +
" border: 5px solid tomato;" +
" background: black;" +
" color: white;" +
" border-radius: 15px;" +
" transition: 0.5s;" +
" }" +
" div:hover {" +
" background: skyblue;" +
" color: orange;" +
" }" +
" </style>" +
" </head>" +
" <body>" +
"<div>" +
"시작라인 : " + reqStartLine + "<br>" +
"" + "헤더 : <br>" +
reqHeader +
"</div>"
+ "</body>" +
data[r.nextInt(data.length)];
String startLine = "HTTP/1.1 200 OK\r\n";
// Content-Type : 보내는 컨텐트 내용에 대한 타입 (브라우저에서 헤더를 보고 해석(파싱)함)
// text/html : 메인/서브 타입, 타입에러일경우 브라우저에서 다운로드창이 뜸, text/text, text/xml, ...
// 보내는 데이터의 길이 (바이트의 길이)
String headers = "Content-Type: text/html;charset=utf-8\r\n"
+ "Content-Length: " + msg.getBytes("utf-8").length + "\r\n\r\n";
String body = msg;
String result = startLine + headers + body;
OutputStream out = s.getOutputStream();
out.write(result.getBytes("utf-8"));
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
결과 (클라이언트 요청(브라우저 접속)시마다 출력)
요청한 사용자의 보내준 데이터 확인하기
=============================
요청한 사용자의 보내준 데이터 확인하기
=============================
요청한 사용자의 보내준 데이터 확인하기
=============================
요청한 사용자의 보내준 데이터 확인하기
=============================
요청한 사용자의 보내준 데이터 확인하기
=============================
요청한 사용자의 보내준 데이터 확인하기
서버(소스) 구동중인 상태에서 브라우저에서 127.0.0.1:8000 접속시 출력되는 결과 (메시지는 랜덤 출력)
살 빠집니다.
Java - 리플렉션, 클래스의 메서드 정보 확인 (0) | 2018.10.12 |
---|---|
Java - 리플렉션 (reflect) (0) | 2018.10.08 |
Java - ServerSocket, Thread를 적용한 에코메시지 테스트 (0) | 2018.10.04 |
Java - Jsoup을 이용한 크롤링으로 네이버 실시간 순위 가져오기 (20.07.30 수정) (1) | 2018.10.04 |
Java - json 개요, Gson 사용 (0) | 2018.10.04 |
댓글 영역