기타 공부 기록/csharpnetwork인강

네트워크 클래스 (3/5)

babystep 2022. 1. 11. 14:07
728x90

 

  • 네트워크 클래스 (3/5)
    • 네트워크 연결 클래스 ( TcpListener , TcpClient, UdpClient )
    • 연결 클래스
      • 크게 두가지로 나눈다
      • TCP UDP
      • 구분
        • TCP 
TcpLÅener, TcpClient 
UDP 
UdpClient 
Socket 71 
(Winsock)
        • TcpListener : 서버에서 사용
        • TcpClient : 서버 + 클라이언트 둘다 사용
        • udpClient : 서버 클라 모두 사용
        • 기본적으로 둘다  socket기반이다.

 

  • namespace 선언
    • using System.Net.Sockets
      • 미리 위의 네임스페이스를 선언해줘야 socket사용가능

 

  • TCP-TcpListener/TcpClient
    • udp보다 tcp 관심을 둘게 많다
    • 왜냐하면 udp 보다 데이터에 대한 신뢰도가 포함되어있고
    • 현재는 인터넷 속도가 매우빠르기때문에 tcp 써도 많이 느리게 느껴지지 않아서
    • tcp 많이 사용하는 추세이다.
    • 물론 상황에따라서 udp tcp 쓴다.
  • TcpListener
    • 서버와 클라이언트를 구분할 있는 클래스
      • 클라이언트 연결을 대기( 대기 상태 )
      • 서버 : 서버프로그램이 떠있는 컴퓨터를 서버라고한다.!
        • Server 
(9 대기삼E||, 
@ 접속 요청 
(최 데이터 전송 
口 
Client
        1. 대기상태 ( server )
          1. tcpListener 에서 대기할수있게해준다. 해당클래스는 서버에서

사용

  1. 접속 요청
  2. 데이터 전송
  • 역할
    • 클라이언트 연결 대기
    • TcpClient 생성
    • server 
TcpListener 
cpCIient 
Tc:pclient 
Tcpclient 
TcpClient 
TcpCIient 
TcpCIient

 

  • (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()
    • NetworkStream 
byte
    • Byte단위로 전송하기 위해서 Encoding.ASCII.GetBytes() 제공<< 해당 함수로 바이트 단위로 데이터를 잘게 쪼게서 보낼 있다.
    • NetworkStream.Read() / Write() 함수 사용

 

 

728x90