728x90
- 네트워크 클래스 (3/5)
- 네트워크 연결 클래스 ( TcpListener , TcpClient, UdpClient )
- 연결 클래스
- 크게 두가지로 나눈다
- TCP와 UDP
- 구분
- TcpListener : 서버에서 사용
- TcpClient : 서버 + 클라이언트 둘다 사용
- udpClient : 서버 클라 모두 사용
- 기본적으로 둘다 socket기반이다.
- namespace 선언
- using System.Net.Sockets
- 미리 위의 네임스페이스를 선언해줘야 socket사용가능
- TCP-TcpListener/TcpClient
- udp보다 tcp에 관심을 둘게 더 많다
- 왜냐하면 udp 보다 데이터에 대한 신뢰도가 포함되어있고
- 현재는 인터넷 속도가 매우빠르기때문에 tcp를 써도 많이 느리게 느껴지지 않아서
- tcp를 많이 사용하는 추세이다.
- 물론 상황에따라서 udp tcp를 쓴다.
- TcpListener
- 서버와 클라이언트를 구분할 수 있는 클래스
- 클라이언트 연결을 대기( 대기 상태 )
- 서버 : 서버프로그램이 떠있는 컴퓨터를 서버라고한다.!
- 대기상태 ( server )
- tcpListener 에서 대기할수있게해준다. 즉 해당클래스는 서버에서
사용
- 접속 요청
- 데이터 전송
- 역할
- 클라이언트 연결 대기
- TcpClient 생성
- (1)과 (2)는 동일한 TcpClient
- (3)과 (4)는 동일한 TcpClient
- 서버의 TcpListener 에서 TcpClient를 생성한다.
- 즉 서버에서는 TcpListener를 통해서만 TcpClient가 생성된다.
- 연결수락의 경우 따로 연결수락 함수가 존재하는것이 아니다.
클라이언트와 서버의 TcpClient가 동일한 값으로 양쪽(1)과 (2)에 정보가 셋팅되는것을 연결수락으로 보면된다.
- TcpListener
- 생성자
- 서버 ip주소와 포트번호 설정
- public TcpListener(
IPAddress localaddr,
int port
) // IPAddress.Parse("ip주소")'; 적용
- public TcpListener(
IPEndPoint localEP
)
- TcpListener.Start() 와 TcpListener.Stop()
- 대기상태 시작과 정지 함수
- TcpListener.AcceptTcpClient() 이전에 실행
- TcpListener.AcceptTcpClient()
- 클라이언트 요청 대기 및 TcpClient생성 -> 연결 수락
- (1) 대기 상태
- TcpClient
- 특징
- 서버와 클라이언트 모두 사용
- 역할
- 서버와 클라이언트 연결 및 요청
- TcpClient 생성자
- ip 주소와 포트 설정 -> 연결 통로 설정
public TcpClient (
string hostname, //도메인명과 헷갈릴수있지만 다르다. 보통은 도메인명과 호스트명이 동일하긴하지만, 정확하게는 호스트명은 해당 장치에 국한된다. hostname에 도메인명을 통해서 접속하거나 ip주소를 써서 접속한다. ip주소가 가장 명확하기에 문자열형태로 hostName을 지정해도 된다.
int port //
)
- 생성자 외의 연결 요청 메소드
- 생성자에서 아이피를 설정하는방법도 있지만
tcpClient생성 한 그 뒤에 포트와 아이피를 설정할 수도있다.
- public void Connect( IPAddress address, int port)
- public void Connect( IPAddress[] ipAddresses, int port)
- public void Connect( OPEndPoint remoteEP)
- public void Connect( string hostname, int port); // 가장 간단하다, 다른 connect함수는 매개변수에 클래스(객체)가 들어가지만 이 메소드는 hostname과 port만 넣어주면된다.
- 연결 해제
- TcpClient.Close()
- 데이터 전송 스트림
- TCP -> NetworkStream 사용
- 스트림 : 하나의 장치에서 다른 장치로 데이터를 전송할 수 있는 통로
- public NetworkStream GetStream()
- Byte단위로 전송하기 위해서 Encoding.ASCII.GetBytes()등 제공<< 해당 함수로 바이트 단위로 데이터를 잘게 쪼게서 보낼 수 있다.
- NetworkStream.Read() / Write() 함수 사용
728x90
'기타 공부 기록 > csharpnetwork인강' 카테고리의 다른 글
네트워크 클래스 (4/5) (0) | 2022.01.12 |
---|---|
네트워크 클래스 (2/5) (0) | 2022.01.11 |
( 네트워크 클래스 1/5 ) (0) | 2022.01.07 |
( 네트워크 기본 구조와 원리 2/2 ) (0) | 2022.01.07 |
c_sharp_network강의 "네트워크 기본 구조와 원리 1/2 " (0) | 2022.01.05 |