네트워크 - 유니캐스트, 멀티캐스트, 브로드캐스트

이강용·2024년 6월 8일
0

CS

목록 보기
40/109
유형설명시각적 예시
유니캐스트한 송신자가 한 수신자(1:1)에게 데이터를 전송하는 방식. 예를 들어, 한 컴퓨터가 다른 특정 컴퓨터에 데이터를 전송하는 경우
멀티캐스트한 송신자가 특정 그룹의 수신자들(1:N)에게 데이터를 전송하는 방식. 네트워크 내에서 여러 수신자들에게 동시에 데이터를 전송할 수 있으며, 주로 스트리밍, 화상회의 등에 사용
브로드캐스트한 송신자가 네트워크 내의 모든 수신자(1:N)에게 데이터를 전송하는 방식. 모든 네트워크 장치가 동일한 데이터를 수신하며, 일반적으로 로컬 네트워크에서 사용됨. 예를 들어, ARP 요청 등이 이에 해당

npm install express socket.io

const app = require("express")();
const http = require("http").Server(app);
const io = require("socket.io")(http);
const port = process.env.PORT || 3000;
app.get("/", (req, res) => {
  res.sendFile(__dirname + "/index.html");
});
io.on("connection", (socket) => {
  socket.on("chat message", (msg) => {
    io.emit("chat message", msg);
  });
});
http.listen(port, () => {
  console.log(`Socket.IO server running at
http://localhost:${port}/`);
});
<!DOCTYPE html>
<html>
  <head>
    <title>Socket.IO chat</title>
    <style>
      body {
        margin: 0;
        padding-bottom: 3rem;
        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
          Helvetica, Arial, sans-serif;
      }
      #form {
        background: rgba(0, 0, 0, 0.15);
        padding: 0.25rem;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        display: flex;
        height: 3rem;
        box-sizing: border-box;
        backdrop-filter: blur(10px);
      }
      #input {
        border: none;
        padding: 0 1rem;
        flex-grow: 1;
        border-radius: 2rem;
        margin: 0.25rem;
      }
      #input:focus {
        outline: none;
      }
      #form > button {
        background: #333;
        border: none;
        padding: 0 1rem;
        margin: 0.25rem;
        border-radius: 3px;
        outline: none;
        color: #fff;
      }
      #messages {
        list-style-type: none;
        margin: 0;
        padding: 0;
      }
      #messages > li {
        padding: 0.5rem 1rem;
      }
      #messages > li:nth-child(odd) {
        background: #efefef;
      }
    </style>
  </head>
  <body>
    <ul id="messages"></ul>
    <form id="form" action="">
      <input id="input" autocomplete="off" /><button>Send</button>
    </form>
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();
      var messages = document.getElementById("messages");
      var form = document.getElementById("form");
      var input = document.getElementById("input");
      form.addEventListener("submit", function (e) {
        e.preventDefault();
        if (input.value) {
          socket.emit("chat message", input.value);
          input.value = "";
        }
      });
      socket.on("chat message", function (msg) {
        var item = document.createElement("li");
        item.textContent = msg;
        messages.appendChild(item);
        window.scrollTo(0, document.body.scrollHeight);
      });
    </script>
  </body>
</html>

브로드 캐스트 예

profile
HW + SW = 1

0개의 댓글