각각 다른 프로젝트로 예제 클래스 2개로 실행





< MainServer.java > 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package server;
 
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
 
public class MainServer {
 
    public static void main(String[] args ) {
        try {
            
            /* 클라이언트가 포트 8888연결을 시도하면 accept()는 대기를 풀고, 
             * 클라이언트와 연결시키는 Socket 클래스를 생성하여 반환
             * socket변수가 바로 클라이언트랑 1:1 연결된 소켓*/
            ServerSocket serverSocket = new ServerSocket(8888);    // 포트8888의 서버소켓 생성
            Socket socket = serverSocket.accept();    // accept: 클라이언트가 들어오는 것을 대기하는 역할
            
            
            /* OutputStream 객체에 서버에서 전달할 메세지를 작성 */
            OutputStream outputData = socket.getOutputStream();
            String sendData = "Welcome to Socket";
            outputData.write(sendData.getBytes());
            
            serverSocket.close();
            socket.close();
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
cs



< MainClient.java >


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package client;
 
import java.net.Socket;
 
import java.io.InputStream;
 
public class MainClient {
 
    public static void main (String[] args) {
        
        try {
            
            Socket socket = new Socket("10.11.11.111"8888);    // Socket 객체를 생성하여 연결
            
            /* 연결이 정상적으로 되었다면 데이터를 스트림형태로 받아와서 출력 */
            InputStream inputData = socket.getInputStream();
            byte[] receiveBuffer = new byte[100];
            inputData.read(receiveBuffer);
            
            System.out.println(new String(receiveBuffer));
 
            socket.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
cs





1.  서버를 먼저 실행시키면 클라이언트 대기 상태로 들어간다.

2. 클라이언트를 실행시키면 서버와 연결을 시도


3. 서버는 문자열을 클라이언트에게 전달한 후 자신은 종료

4. 클라이언트가 받은 문자열을 출력하고 종료


+ Recent posts