동일 port 사용하는 서버를 여러 개 실행시킬 수 없다.

 

서버는 클라이언트에서 데이터를 받아 모든 클라이언트에게 넘기기 때문에 어떤 클라이언트가 데이터를 주었는가를 알아야한다.

-> Broadcasting 구현을 통해 해결 => TcpClient 객체 사용

Thread 함수의 파라미터 전달을 위해 ParameterizedThreadStart객체 사용

 

C# generic collection

- List 객체는 array와 다리 동적으로 data를 추가, 삭제, 검색할 수 있다.

- Object 기반 collection은 요소에 접근할 때마다 형 변환 필요

-> 어떠한 type의 변수도 Add(기타연산)할 수 있다.

- Generic 기반 collection은 요소에 접근할 때마다 형 변환 필요 없다.

-> 선언시 정의한 type의 변수에 대해서만 Add(기타연산)할 수 있다.

 

connection 관리의 어려움

- 연결 open, close, error에 대한 관리 대책이 필요

- 주기적으로 socket이 연결 상태인지 체크 필요

- 비정상 종료에 대한 처리 필요

-> 다수 클라이언트가 동시 접속하는 경우 안정적으로 여러 클라이언트 소켓을 관리하는 것이 어렵다.

 

WebSocket

- Web기반 Socket 프로그래밍 프레임워크

- TCP socket과 비슷하게 데이터를 주고 받으며 Polling 보다 자유롭게 데이터 전송 가능

- Websocket을 지원하는 브라우저가 적다.

- 브라우저 상관없이 웹에서 실시간 데이터 처리를 위해 socket.io 제공

- 데이터 주고 받기위한 메세지 규약 제공

- 연결 유지를 위한 핑퐁 등과 같은 socket 연결 기본 기능 구현

- 서비스 개발자는 실시간 데이터 처리만 집중할 수 있다.

-> 서버 구현이 단순, 클라이언트 전용 유니티와 Web으로 구현 가능

 

socket.io 주요 함수

1. listening

-> io.attach(4567);

2. 클라이언트 접속 이벤트

-> io.on('connection', function(socket){...});

3. Socket 이벤트

-> socket.on('chat message', function(msg){...});

4. 데이터 전송

-> io.emit('chat message', msg); // 접속한 모든 클라이언트에 전송

-> 데이터 전송시 JSON(JavaScript Object Notation) 포맷 사용

 

Socket.IO는 데이터 전송을 위해 JSON포맷 사용

-> 속성-값 쌍을 사용해 데이터 오브젝트를 전달하기 위한 개방형 표준

-> 단순 변수와 복합 변수를 표현할 수 있음.

'학교수업' 카테고리의 다른 글

정보보호개론 13주차  (0) 2021.12.04
가상현실 프로그래밍 13주차  (0) 2021.12.03
임베디드 기초 12주차  (0) 2021.11.30
정보보호개론 12주차  (0) 2021.11.27
임베디드 기초 11주차  (0) 2021.11.27

+ Recent posts