프로그래밍 언어/프로그래밍

[JAVA] 채팅 서버, 클라이언트 예제

오치리 2016. 10. 2.

================== 서버 ============================


public class Server {

public static void main(String[] arg){

ServerSocket server = null;

BufferedReader in = null;

try{

// 서버 포트번호 셋팅

server = new ServerSocket(12345);

System.out.println("Server Ready");

while(true){

// 클라이언트가 보내는 연결요청을 기다린다.

Socket s = server.accept();

// 클라이언트가 보낸 데이터를 읽는 객체를 생성한다.

in = new BufferedReader(new InputStreamReader(s.getInputStream()));

// 클라이언트 한면과 대화가 끝나기 전가지 다른 클라이언트가 보낸 연결 요청은 받지 않는다.

// 여러 클라이언트를 연결 시키려면 아래 while문을 thread로 바꿔야한다.

while(true){

String str = in.readLine();

if(str.equals("."))

break;

System.out.println("전송된 데이터 : " + str);

}

System.out.println("end connect");

}

}catch(Exception e){

System.out.println(e.getMessage());

}

}

}


================== 클라 ============================


public class Client {

public static void main(String[] args){

Scanner in = new Scanner(System.in);

Socket socket = null;

PrintWriter out = null;

try{

// 소켓 객체 생성

socket = new Socket(InetAddress.getByName("192.168.0.3"),12345);

// 해당 소켓으로 통신할 수 있는 출력 객체 생성

out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));

}catch(Exception e){

System.out.println(e.getMessage());

}

while(true){

System.out.print("send text(finish '.') = ");

// enter 입력을 기다린다.

String str = in.nextLine();

// 출력객체에 대이터를 담는다

out.println(str);

// 소켓으로 읽은 데이터를 전송한다. flush() 는 필수

out.flush();

// 종료 조건 

if(str.trim().equals("."))

break;

}

out.close();

try{

socket.close();

}catch(Exception e ){

}

}

}



'프로그래밍 언어 > 프로그래밍' 카테고리의 다른 글

[JAVA] 스트림 입출력 형식  (0) 2016.09.30
[유니티] 오브젝트 터치좌표로 이동하기  (0) 2016.06.17
유니티 점프  (0) 2016.06.08
해시 테이블 (hash table)  (0) 2009.01.18
트리  (0) 2009.01.18

댓글