본문으로 바로가기

2020/07/29 C#

category 스마트팩토리/C# 2020. 7. 29. 19:51

System.Net.Sockets.Socket

소켓 통신은 기본은 접속을 받아들이는 서버와 그에 연결하는 클라이언트를 작성하는 것이다.

 

운영체제는 TCP/IP 통신을 위해 소켓(socket)이라는 기능을 만들어 둔다.

 

TCP 소켓 = SocketType.Stream + Protocla.Tcp 

 

속도가 느리다.

파일 다운시 이용

자료를 보낼때 쪼개서 순서를 매겨서 보낸다.

받을때는 자리를 확보하고 자료를 받는다 만약 자료가 순서대로 도착하지 않는다면 자리를 만들어놓고 채운다.

그리고 자료가 도착하지 않으면 보내달라고 요청한다.

자료가 완벽하게 들어온다

 

UDP 소켓Socket = Type.Dgram + ProtocolType.Udp 

 

속도가 빠르다.

영상 다운시 이용

자료를 쪼개서 보내는데 순서를 매기지는 않는다.

받을때는 자리를 확보하지도 않고 만약 순서대로 도착하지 않으면 그 파일을 버려진다.

그리고 자료가 도착하지 않으면 보내달라는 요청도 없다.

자료가 완벽하지 않다.

 

TCP와 UDP가 모두 IP 프로토콜을 기반으로 동작한다.

TCP와 UDP 방식의 차이점

BIND의 오류에 대해 설명하겠다.

첫번째를 실행했을때는 1 2 3이 출력되고 ReadLine에서 블락이 되서 잠시 멈춘 상태이다

이상태에서 다시 컴파일을 하게 되면 1 2 를 출력하고 13줄인  BIND에서 에러가 뜬다.

첫번째 컴파일에서 BIND를 사용하고 있는데 또 사용하니깐 오류가 뜬다.

TCP 소켓

TCP 소켓의 서버와 클라이언트를 만들어 보겠다.

 

 

 

첫번째 그림은 서버의 모습이다.

Socket Server는 클라이언트가 오게 되면 맞이하는 소켓이다.

Bind (IP + PORT + 소켓)작업을 한다.

IPAddress.Any는 지금 컴퓨터의 아이피 주소를 받아온다.

Server.Listen(10)은 입구의 넓이이다. 동시에 10명이 들어올수 있다는 뜻이다.

동시에 11명이 오면 11번째는 거절당하게 된다. 이 숫자를 크게 하면 자원이 낭비가 된다.
Server.Accept는 들어온 애들을 하나씩 입장시킨다는 뜻이다. 
들어와서 놀고 있으면 통신 상태라는 뜻이다.

나가게 되면 Close가 되었다고 한다.

Encoding.UTF8.GetString(Buffer, 0, Num)은 고객한테 주문을 받아서 배열 순서대로 길이를 제서 출력하겠다는 뜻이다.

주문받을 것을 다시 클라이언트에 보낸다.

 

두번째는 클라이언트의 모습이다.

위에 설명을 참고하면 이해가 쉬울것이다.

출력한 모습이다.

실행할때는 먼저 서버를 켜고 그다음에 클라이언트를 켜야 한다.

 

'스마트팩토리 > C#' 카테고리의 다른 글

2020/8/18 C#  (0) 2020.08.18
2020/7/30 C#  (0) 2020.07.30
2020/7/28 C#  (0) 2020.07.28
2020/07/27 C#  (0) 2020.07.27
2020/07/23~24 C#  (0) 2020.07.23