SlideShare a Scribd company logo
1 of 35
Download to read offline
Speaker. Moon-Hak-I
Prologue!
본 발표는 아래와 같은 내용으로 진행되며, 모듈의 내부적인
코드 리뷰는 생략한다.




      구조       상세      예제
Overview!
ž    비동기 네트워크 관련 API 제공
ž    서버와 클라이언트 모두 포함
Structure!

           Server
           EventEmitter   Socket
                           Stream




 Wrapper   Utility
Detail!
net.createServer([options], [connectionListener])
: TCP 서버를 생성하며, ‘connectionListener’ 매개 변수는 자동으로
‘connection’ 이벤트의 리스너로 추가된다.




                                            Wrapper!
Detail!
net.connect(options, [connectionListener])
net.connect(port, [host], [connectionListener])
net.connect(path, [connectionListener])
: 새로운 소켓 객체를 생성하고 해당 위치로 소켓을 연다. 소켓이 설정되면
‘connection’ 이벤트가 발생되고, ‘connectionListener’ 매개 변수는
‘connection’ 이벤트에 대한 리스너로서 추가된다.




                                           Wrapper!
Detail!
server.listen(port, [host], [backlog], [callback])
server.listen(path, [callback])
server.listen(handle, [callback])
: 지정된 서버(port, host, path, …)의 커넥션 연결을 시작한다. 서버가 실행되
면 ‘listening’ 이벤트가 발생되고, ‘callback’ 매개 변수는 ‘listening’ 이벤트에 대
한 리스너로서 추가된다.




                                                   Server!
Detail!
server.close([callback])
: 새로운 커넥션 연결을 중단하고 기존의 커넥션만 유지한다. 그리고 모든 커넥
션이 종료되었을 때 서버를 닫는다. 서버는 ‘close’ 이벤트를 발생시키고 선택적
으로 ‘close’ 이벤트를 받을 수 있는 콜백을 매개 변수로 정할 수 있다.




                                      Server!
Detail!
server.address()
: IP 주소와 포트 번호와 같은 서버 정보를 운영체제로부터 가져온다. 참고로
‘listening’ 이벤트가 발생한 후에만 메소드 호출이 가능하다.




                                     Server!
Detail!
server.maxConnections
: 서버에 연결되는 커넥션의 최대 수를 정하는 프로퍼티




                                 Server!
Detail!
server.connections
: 서버에 동시에 연결된 커넥션 수를 가지는 프로퍼티




                                Server!
Detail!
server.on(event, listener)
Event           Description
listening       server.listen 메소드가 호출되었을 경우
connection      새로운 커넥션이 만들어질 경우
close           서버가 닫힐 경우
error           에러가 발생할 경우




                                              Server!
Detail!
socket.connect(port, [host], [connectListener])
socket.connect(path, [connectListener])
: 일반적으로 net.connect 래핑 함수를 호출하여 소켓을 열기 때문에 사용자 정
의 소켓을 구현해야 할 경우에만 사용한다. 그리고 ‘connectListener’ 매개 변수
는 ‘connect’ 이벤트에 대한 리스너로서 추가된다.




                                             Socket!
Detail!
socket.bufferSize
: 현재 쓰여질 버퍼의 문자 수를 나타내는 프로퍼티




                               Socket!
Detail!
socket.setEncoding([encoding])
: 읽을 스트림으로 소켓에 대한 인코딩을 설정한다.




                                 Socket!
Detail!
socket.write(data, [encoding], [callback])
: 소켓에 데이터를 보낼 수 있는 메소드이며, 데이터의 기본 인코딩은 UTF8이
다. 버퍼에 쌓인 데이터가 성공적으로 전송되었다면 true를 반환한다. 버퍼가
모두 비워졌을 경우에 ‘drain’ 이벤트가 발생한다.




                                             Socket!
Detail!
socket.end([data], [encoding])
: write 메소드와 기능은 같지만 일부 스트림만 종료하며 FIN 패킷을 보낸다. 이
때 서버가 일부 데이터를 보낼 수 있다. (TCP Half-close)




                                        Socket!
Detail!
socket.destroy()
: 소켓의 I/O 활동을 발생하지 않게 하는 메소드이며, 에러가 발생했을 경우에
필요하다.




                                      Socket!
Detail!
socket.pause()
: 데이터 읽기를 중지하며, ‘data’ 이벤트는 발생되지 않는다.




                                        Socket!
Detail!
socket.resume()
: 데이터 읽기를 재개한다.




                  Socket!
Detail!
socket.setTimeout(timeout, [callback])
: 소켓에 설정된 초과 시간이 지나면 ’timeout’ 이벤트가 발생하며, ‘callback’ 매
개 변수는 ‘timeout’ 이벤트의 리스너로서 추가된다. 참고로 ‘timeout’ 이벤트가
발생하여도 커넥션은 유지된다. 커넥션을 끊기 위해서는 사용자가 end 메소드
나 destroy 메소드를 호출해야 한다.




                                             Socket!
Detail!
socket.setNoDelay([noDelay])
: Nagle 알고리즘을 비활성화하고, 기본적으로 TCP 연결은 Nagle 알고리즘을
사용하므로 데이터를 보내기 전에 이를 버퍼에 저장한다. ‘noDelay’ 매개 변수
를 설정하면 write 메소드가 호출될 때마다 곧바로 데이터를 전송한다.




                                       Socket!
Detail!
socket.setKeepAlive([enable], [initialDelay])
: Keep-Alive 기능의 활성화 유무를 설정하는 메소드이다. 기본적으로 비활성
화 되어있으며 지연 시간을 설정할 수 있다.




                                                Socket!
Detail!
socket.address()
: IP 주소와 포트 번호와 같은 서버 정보를 운영체제로부터 가져온다.




                                     Socket!
Detail!
socket.remoteAdress
: 원격 IP 주소를 가지는 프로퍼티




                       Socket!
Detail!
socket.remotePort
: 원격 포트를 가지는 프로퍼티




                    Socket!
Detail!
socket.bytesRead
: 소켓이 받은 총 바이트 수를 가지는 프로퍼티




                             Socket!
Detail!
socket.bytesWritten
: 소켓에 보낸 총 바이트 수를 가지는 프로퍼티




                             Socket!
Detail!
socket.on(event, listener)
Event          Description
connect        소켓 커넥션이 설정되었을 경우
data           데이터를 받았을 경우
end            소켓이 FIN 패킷을 보냈을 경우
timeout        시간이 초과되었을 경우
error          에리가 발생할 경우
close          소켓이 닫힌 경우




                                    Socket!
Detail!
net.isIP(input)
: 입력된 IP의 버전을 반환한다.




                      Utility!
Detail!
net.isIPv4(input)
: 입력된 IP의 버전이 4일 경우, true를 반환한다.




                                   Utility!
Detail!
net.isIPv6(input)
: 입력된 IP의 버전이 6일 경우, true를 반환한다.




                                   Utility!
Example!
ž    간단한 웹 서버 만들기
ž    사용 모듈 (NET + MIME)
ž    데모 (http://inpost.kr:7777)
Example!
Thank you!

More Related Content

What's hot

Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...
Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...
Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...Amazon Web Services
 
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...Amazon Web Services Korea
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트Amazon Web Services Korea
 
[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用Amazon Web Services Japan
 
독특한회사 ZEPL 경험기
독특한회사 ZEPL 경험기독특한회사 ZEPL 경험기
독특한회사 ZEPL 경험기Ahyoung Ryu
 
Securing APIs for ultimate security and privacy with Azure | Codit Webinar
Securing APIs for ultimate security and privacy with Azure | Codit WebinarSecuring APIs for ultimate security and privacy with Azure | Codit Webinar
Securing APIs for ultimate security and privacy with Azure | Codit WebinarCodit
 
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018Amazon Web Services Korea
 
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...Md. Abdul Barek
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAmazon Web Services Japan
 
Solutions Pre-Int. Unit 3
Solutions Pre-Int. Unit 3Solutions Pre-Int. Unit 3
Solutions Pre-Int. Unit 3olya_o
 
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance Seminar
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance SeminarAWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance Seminar
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance SeminarAmazon Web Services Korea
 
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SAAmazon Web Services Korea
 
AWSを用いた耐障害性の高いアプリケーションの設計
AWSを用いた耐障害性の高いアプリケーションの設計AWSを用いた耐障害性の高いアプリケーションの設計
AWSを用いた耐障害性の高いアプリケーションの設計SORACOM, INC
 
Internal controls-for-small-business
Internal controls-for-small-businessInternal controls-for-small-business
Internal controls-for-small-businessSuitheng Ear
 
Kopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIKopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIImam Omar Mochtar
 
Kubernetes networking in AWS
Kubernetes networking in AWSKubernetes networking in AWS
Kubernetes networking in AWSZvika Gazit
 
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...Amazon Web Services
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터Amazon Web Services Korea
 

What's hot (20)

Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...
Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...
Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection - SID341 ...
 
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...
AWS Amplify를 통한 손쉬운 모바일 애플리케이션 개발하기 - 김필중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul ...
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
 
[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
독특한회사 ZEPL 경험기
독특한회사 ZEPL 경험기독특한회사 ZEPL 경험기
독특한회사 ZEPL 경험기
 
Securing APIs for ultimate security and privacy with Azure | Codit Webinar
Securing APIs for ultimate security and privacy with Azure | Codit WebinarSecuring APIs for ultimate security and privacy with Azure | Codit Webinar
Securing APIs for ultimate security and privacy with Azure | Codit Webinar
 
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018
Serverless 개발에서의 인증 완벽 가이드::박선용::AWS Summit Seoul 2018
 
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...
Deploy and Configure an Enterprise Root CA & Subordinate CA in Windows Server...
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
 
Solutions Pre-Int. Unit 3
Solutions Pre-Int. Unit 3Solutions Pre-Int. Unit 3
Solutions Pre-Int. Unit 3
 
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance Seminar
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance SeminarAWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance Seminar
AWS Security 솔루션 자세히 살펴보기 :: 신용녀 :: AWS Finance Seminar
 
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA
[AWS Builders] AWS IAM 을 통한 클라우드에서의 권한 관리 - 신은수, AWS Security Specialist SA
 
AWSを用いた耐障害性の高いアプリケーションの設計
AWSを用いた耐障害性の高いアプリケーションの設計AWSを用いた耐障害性の高いアプリケーションの設計
AWSを用いた耐障害性の高いアプリケーションの設計
 
Internal controls-for-small-business
Internal controls-for-small-businessInternal controls-for-small-business
Internal controls-for-small-business
 
Kopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIKopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP API
 
Kubernetes networking in AWS
Kubernetes networking in AWSKubernetes networking in AWS
Kubernetes networking in AWS
 
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...
Best Practices for CI/CD with AWS Lambda and Amazon API Gateway (SRV355-R1) -...
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
 

Viewers also liked

[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」강 민우
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기Darion Kim
 

Viewers also liked (7)

[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기
 

Similar to [NodeJS] - NET 모듈 소개

Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client문익 장
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디quxn6
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210Yong Joon Moon
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVAcooddy
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
Python socket programming
Python socket programmingPython socket programming
Python socket programmingTae Young Lee
 
Ryu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIRyu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIjieun kim
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명진우 이
 
Network programming report
Network programming reportNetwork programming report
Network programming reportJongwon
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍kimkiweon
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나Jang Hoon
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)문익 장
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 

Similar to [NodeJS] - NET 모듈 소개 (20)

Nodejs_chapter3
Nodejs_chapter3Nodejs_chapter3
Nodejs_chapter3
 
Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVA
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Python socket programming
Python socket programmingPython socket programming
Python socket programming
 
Ryu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIRyu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST API
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
Network programming report
Network programming reportNetwork programming report
Network programming report
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)
소켓 주소 구조체 다루기(윈도우 네트워크 프로그래밍)
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 

[NodeJS] - NET 모듈 소개

Editor's Notes

  1. 안녕하세요.NET모듈 발표자 홍재석입니다.본의아니게 지난 주에 발표임에도 불구하고 개인사정으로 불참하여 이 자리를 빌어 죄송하단 말씀을 드리겠습니다.그럼, 시작하겠습니다.
  2. 발표하기에 앞서 제가 TCP에 대한 지식이 다소 부족하여 발표가 미흡하더라도 양해 부탁드리겠으며,진행 순서는 코드의 양이 많고 깊게 분석하면 네이티브 영역까지 설명해야 되기때문에 발표 컨셉을 코드 리뷰가 아닌 넷 모듈의 구조와 API 설명 그리고 넷 모듈을 활용한 예제 시연 순으로 진행하겠습니다.
  3. 넷 모듈은 서버와 클라이언트 모두를 포함한 비동기 네트워크 관련 API를 제공합니다.
  4. 넷 모듈은 크게 두 개의 클래스와 이를 내부적으로 객체를 생성하여 리턴하는 래핑함수 그리고 아이피 버전 체크와 같은 기능을 제공하는 유틸 함수로 구성되어 있습니다. 참고로 서버 클래스는 이벤트 클래스를 상속받고, 소켓 클래스는 스트림 클래스를 상속 받습니다. 그리고 스트림 클래스는 이벤트 클래스를 상속받습니다. 결국 서버와 소켓 클래스는 이벤트 클래스의 특징을 갖고 있습니다.
  5. 참고로 동일한 기능을 하는 createConnection메소드도 있습니다.
  6. connect == createConnection
  7. FIN Packet이란 세션을 종료시키는데 사용되며 보낸 사람이 더 이상 보낸 데이터가 없음을 보여준다.TCP Half-close는 두 개의 스트림 중 하나만 종료하는 것을 말한다.(완전한 커넥션 종료가 아님)
  8. Nagle 알고리즘이란 네트워크에서 “가능하면 조금씩 여러 번 보내지말고 한번에 많이 보내라”라는 원칙을 기반으로 만들어진 알고리즘입니다. 참고로 반응 속도가 중요한 온라인 게임에서는 오히려 문제가 될 수 있으며, 이를 해결하기 위해 서버는 Nagle 알고리즘을 활성화하고 클라이언트는 비활성화 하는 방법을 사용하기도 합니다. 쉽게 말해서 버퍼라고 생각하시면 되고 TCP소켓은 디폴트로 Nagle 알고리즘을 적용하고 있습니다.
  9. 발표를 준비하면서 어떤 예제를 만들어야지 여러분들이 공감을 할까라는 고민을 했었습니다.고민 중에 전성균님께서 예전에 발표하신 HTTP 관련 PPT의 끝자락에 자바로 구현된 간단한 웹 서버 예제가 있어서…그것을 넷 모듈을 사용하여 노드 버전으로 만들어보면 좋겠다라는 생각이들어 이렇게 만들어 보았습니다.코드는 50라인 정도의 매우 간단하게 구현되어있으며 HTTP 프로토콜에 대한 지식만 있다면 쉽게 이해하실 수 있습니다.참고로 MIME이라는 커스텀 모듈을 사용하였는데, 이 모듈은 파일 명을 입력하면 어떤 마임 타입인지 반환해주는 함수를 제공합니다.