본문 바로가기
IT, 개발/JAVA

ServerSocket Socket 통신(Server/Client 메시지 주고받기 예제)

by 개발자스터디 2022. 3. 2.
반응형

 

 

 

 

ServerSocket Socket 통신 간단한 설명과 예제

 

요약

서버와 클라이언트의 통신을 간단하게 그림으로 표현했습니다. 

위 그림처럼 ServerSocket 생성 후 연결 시도, 요청승인 후 메시지 보내고 받는 예제입니다.

메시지 받은 후 소켓을 종료합니다.

 

1. Server 예제 

 

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
 
public class ServerTest {
    
    int socketPort = 1111;
    int bufferSize = 1024;
 
    public void fncServer()
    {
        ServerSocket serverSocket;
        Socket socket;
        
        try 
        {
            // ServerSocket 생성 
            serverSocket = new ServerSocket();
            
            // 포트 바인딩 
            // IP 미입력 시 "localhost"가 기본값 
            serverSocket.bind(new InetSocketAddress(socketPort));
            
            while(true)
            {
                // 연결 대기
                
                
                // 요청 승인 
                socket = serverSocket.accept();
                
                
                // 데이터 받는 부분 
                InputStream input = socket.getInputStream();
                
                byte[] b = new byte[bufferSize];
                int readCnt = input.read(b);
                
                String msgStr = new String(b, 0, readCnt, "UTF-8");
 
 
                input.close();
                socket.close();
            }
        } 
        catch (Exception e) 
        {
            // Exception 처리 
        }
    }
    
}
cs

 

 

2. Client 예제 

 

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
34
35
36
37
38
39
40
41
42
43
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
 
public class ClientTest {
    
    int socketPort = 1111;
    int bufferSize = 1024;
 
    public void fncClient()
    {
        Socket socket;
        
        try 
        {
            // Socket 생성 
            socket = new Socket();
            
            // 연결 시도 
            socket.connect(new InetSocketAddress("localhost", socketPort));
            
            
            // 데이터 보내는 부분 
            OutputStream output = socket.getOutputStream();
 
            String msgStr = "test message";
            byte[] bytes = msgStr.getBytes();
            
            
            // 보내기 
            output.write(bytes);
            output.flush();
            
            
            output.close();
        } 
        catch (Exception e) 
        {
            // Exception 처리 
        }
    }
    
}
cs

 

 

로컬에서 테스트 해보시면서 소스를 추가해가시면 도움이 될 것 같습니다.

 

 

 

 

 

728x90
반응형