GGYU
서버/클라이언트 예제 본문
package
practice.iting.tistory.com;
import
java.io.BufferedReader;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.OutputStream;
import
java.io.OutputStreamWriter;
import
java.io.PrintWriter;
import
java.net.InetAddress;
import
java.net.ServerSocket;
import
java.net.Socket;
import
java.text.SimpleDateFormat;
import
java.util.Date;
public
class
EchoServer {
public
static
void
main(String[] args) {
ServerSocket serverSocket =
null
;
//서버의 소켓
int
port =
10001
;
//포트 번호
try
{
serverSocket =
new
ServerSocket(port);
//포트에 서버소켓을 붙인다(Bind)
System.out.println(getTime() +
" 서버가 준비되었습니다."
);
Socket socket = serverSocket.accept();
// 클라이언트의 접속을 허가한다.(Accept)
InetAddress clientAddress = socket.getInetAddress();
// 클라이언트의 주소를 가져온다.
System.out.println(getTime() + clientAddress +
" 에서 클라이언트가 접속했습니다."
);
OutputStream out = socket.getOutputStream();
//클라이언트 소켓의 바이트 스트림을 가져온다.
InputStream in =socket.getInputStream();
//클라이언트 소켓의 바이트 스트림을 입력한다.
PrintWriter pw =
new
PrintWriter(
new
OutputStreamWriter(out));
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(in));
String recvStr =
null
;
//받은 문자열
while
((recvStr = br.readLine()) !=
null
){
System.out.println(getTime() +
" 클라이언트로부터 받은 문자열 : "
+ recvStr);
pw.println(recvStr);
//메시지를 클라이언트에게 전송
pw.flush();
//버퍼를 비움
}
pw.close();
//스트림 닫기
br.close();
//버퍼 닫기
socket.close();
//소켓 닫기
}
catch
(Exception e){
e.printStackTrace();
//예외 처리
}
}
static
String getTime(){
SimpleDateFormat f =
new
SimpleDateFormat(
"[hh:mm:ss]"
);
//날짜 출력
return
f.format(
new
Date());
}
}
package
practice.iting.tistory.com;
import
java.io.BufferedReader;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.OutputStream;
import
java.io.OutputStreamWriter;
import
java.io.PrintWriter;
import
java.net.Socket;
public
class
EchoClient {
public
static
void
main(String[] args) {
try
{
String ip =
"localhost"
;
//클라이언트의 임시 접속 주소
int
port =
10001
;
//접속할 서버 포트
Socket socket =
new
Socket(ip, port);
//클라이언트의 소켓 생성
BufferedReader input =
new
BufferedReader(
new
InputStreamReader(System.in));
OutputStream out = socket.getOutputStream();
//서버의 소켓으로부터 출력을 받음
InputStream in = socket.getInputStream();
//서버의 소켓으로부터 입력을 받음
PrintWriter pw =
new
PrintWriter(
new
OutputStreamWriter(out));
//출력 스트림을 변환
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(in));
//입력 스트림을 변환
String myMsg =
null
;
//전달 메시지
String echo =
null
;
//받는 메시지
while
((myMsg = input.readLine()) !=
null
){
if
(myMsg.equals(
"/q"
)){
break
;
//연결 해제
}
pw.println(myMsg);
//PrintWriter를 이용하여 서버에게 전달
pw.flush();
//버퍼 비우기
echo = br.readLine();
//서버가 버퍼로 메시지를 전달하면 이를 읽음
System.out.println(
"서버: "
+ echo);
}
pw.close();
br.close();
socket.close();
}
catch
(Exception e){
e.printStackTrace();
}
}
}
출처: http://it-ing.tistory.com/111 [아이티-잉]
'프로그래밍 > JAVA' 카테고리의 다른 글
sha512 예제 (0) | 2018.07.19 |
---|---|
base64 사용법 (0) | 2018.07.19 |
크리티컬섹션 처리 (0) | 2018.07.19 |
thread 사용법 (0) | 2018.07.19 |
threadpool 사용법 (0) | 2018.07.19 |
Comments