Node 강의/주특기 플러스

1-3 간단한 데이터 교환

kagan-draca 2024. 10. 17. 16:28

 

1. Client => Server로 데이터 전송 및 Server  => Client로 데이터 반환

client의

client.connect(PORT, HOST, () => {
  console.log('Connected To The Server...');
});

부분에서 

 

수정 후 : 

client.connect(PORT, HOST, () => {
  // 서버와 연결 과정
  console.log('Connected To The Server...');



  const message = 'Hello';
  const buffer = Buffer.from(message);
  // 서버 연결과 동시에 Hello라는 문자열을 버퍼에 담는다.
  client.write(buffer);
  // 서버에게 buffer를 data로 전송한다.
});

으로 "Hello"를 Buffer에 담아  

  client.write(buffer);

로 전송을 해줍니다.

 

그럼 Server에서는

  socket.on('data', (data) => {
    // 서버가 클라이언트로부터 데이터를 받을 때 마다 발생
    // data는 버퍼 형태로 제공되며, 이를 문자열로 변환하거나 원하는 형식으로 처리할 수 있다.

    console.log(data);
  });

 

data 이벤트에서 매개변수로 data를 받아

 

console 로 data를 출력해줄 것 입니다.

 

현재 Client는 Server와 연결함과 동시에 "Hello"를 Server로 보내고 있습니다.

 

그래서, Server에 Client가 연결됨과 동시에 Buffer로 16진수화 된 "Hello"가 출력 되는걸 볼 수 있습니다.

 

추가적으로 Server는 다시 Client에게 "Hello"를 돌려주기 위해

    socket.write(data);

로 받았던 data 내용을 해당 주소로 내용물을 그대로 되돌려 줘 보겠습니다.

 

수정 된 내용 : 

socket.on('data', (data) => {
    // 서버가 클라이언트로부터 데이터를 받을 때 마다 발생
    // data는 버퍼 형태로 제공되며, 이를 문자열로 변환하거나 원하는 형식으로 처리할 수 있다.

    console.log(data);
    socket.write(data);
    // data를 보낸 Client의 주소로 data를 그대로 되돌려 준다.
});

 

다시 Server와 Client를 실행시키면,

 

이전과 달리 Client에서도 16 진수로 변경된 "Hello"가 Buffer에 담겨 돌아오는 걸 볼 수 있습니다.

 

다음에는 Socket에서 했던 Evnet에 따른 Handler를 만들어 Client의 행동에 따른 Event와 Data를 약간 가공해 서버가 응답으로 될려주는 과정을 만들어보겠습니다.