반응형
SMALL
네트워크의 기초 #5 유니캐스트, 멀티캐스트, 브로드캐스트
유니캐스트
유니캐스트란 1 : 1통신을 말함. 대표적으로 HTTP 통신이 있음. 가장 일반적인 네트워크 전송 형태
멀티캐스트
멀티캐스트는 1 : N 통신. 다만 연결된 모든 노드들에게 데이터를 전달하지는 않고 특정 그룹에게만 데이터를 전달
브로드캐스트
브로드캐스트는 1 : N 통신. 그룹이 아닌 연결되어있는 모든 노드에게 데이터를 전달. 예로는 ARP가 있음
브로드캐스트 실습
npm install express socket.io
server.js
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}/`);
});
index.html
<!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>
출력 화면
* 참고
반응형
LIST
'CS > 네트워크' 카테고리의 다른 글
[CS] TCP/IP 4계층 #1. 개념, 캡슐화, 비캡슐화, PDU, OSI 7계층 (1) | 2023.10.13 |
---|---|
[CS] 네트워크의 분류 : LAN, MAN, WAN (0) | 2023.10.12 |
[CS] 네트워크의 기초 #4 네트워크 토폴로지의 필요성과 병목현상 (0) | 2023.10.10 |
[CS] 네트워크의 기초 #3 네트워크 토폴로지 : 링, 메시 (0) | 2023.10.09 |
[CS] 네트워크의 기초 #2 네트워크 토폴로지 : 버스, 스타, 트리 (0) | 2023.10.08 |
댓글