[C#네트워크] 2. 네트워크 클래스
INDEX
네트워크 클래스 지도 보기
-
정보 클래스 -> 연결 클래스 -> 전송 클래스
-
정보 클래스
IPAddress, DNS, IPHostEntry, IPEndPoint
-
연결 클래스
TcpListener, Tcp,Client, UdpClient
-
전송 클래스
NetworkStream, StreamWrite/StreamReader, BinaryWrite/BinaryReader
정보 클래스
IPAddress
- ip주소 형식
- ex)127.0.0.1
- ip주소의 실체
- long형 값
- IPAddress의 역할
- ip주소 ↔ long 형변환
public static IPAddress Parse(string ipString)
- ipString -> “127.0.0.1”ip 주소 설정
public override string ToString()
- 내부 저장된 ip주소 반환
DNS
-
역할
- 도메인명과 ip주소 관리
public static IPHostEntry GetHostEntry(IPAdress address //또는 string hostNameOrAddress)
address의 ip주소로 도메인명 검색하여 저장
public static IPAddress[] GetHostAddresses(string hostNameOreAddress)
도메인명으로 ip주소 검색 및 저장
IPHostEntry
- 역할
- 도메인명과 ip주소를 저장하는 컨테이너
- Dns와 연결하여 사용
IPHostEntry HostInfo = Dns.GetEntry("www.naver.com");
public IPAddress[] AddressList{ get; set;}
- 다수의 ip 주소 저장 -> IPAddress
public string HostName { get;set;}
- 호스트명을 설정 또는 열기
IPEndPoint
- 역할
- 목적지 ip주소와 포트번호를 저장
- ip주소와 port번호 설정
public IPEndPoint(long address, int port)
public IPEndPoint(IPAddress address, int port)
- Address 속성
public IPAddress Address {get;set;}
- 목적지 ip주소 설정
- Port 속성
public int Port {get;set;}
정리
- IPAddress, IPHostEntry, IPEndPoint, Dns는 클래스지만 구조체 정도 수준
- 서로 연관되어있음
- IPAddress - ip
- IPHostEntry - ip+hostname
- IPEndPoint - ip + port
- Dns + ip + domain
연결 클래스
- 구분
- TCP
- TcpListener, TcpClient
- UDP
- UdpClient
- TCP
- namespace 선언
- using System.Net.Sockets
TcpListener
-
서버와 클라이언트를 구분할 수 있는 클래스
- 클라이언트 연결을 대기 (대기상태)
-
역할
- 클라이언트 연결 대기
- TcpClient생성
-
생성자
-
서버 ip주소와 포트번호 설정
public TcpListener( IPAddress localaddr, int port ) // IPAddress.Parse("ip주소"); 적용 public TcpListener( IPEndPoint localEP )
-
-
TcpListener.Start()와 TcpListener.Stop()
- TcpListener 대기상태 시작과 정지
- TcpListener.AcceptTcpClient() 이전 실행
-
TcpListener.AcceptTcpClient()
- 클라이언트 요청 대기 및 TcpClient생성 -> 연결 수락
TcpClient
-
특징
- 서버와 클라이언트 모두 사용
-
역할
- 서버와 클라이언트 연결 및 요청
-
TcpClient 생성자
-
ip주소와 포트 설정 -> 연결 통로 설정
public TcpClient( string hostname, int port )
-
-
생성자 외의 연결 요청 메서드
public void Connect(IPAddress address, int port)
public void Connect(IPAddress[] ipAddress, int port)
public void Connect(IPEndPoint remoteEP)
public void Connect(string hostname, int port)
- 연결 해제
- TcpClient.Close()
- 데이터 전송 스트림
- TCP -> NetworkStream 사용
public NetworkStream GetStream()
NetworkStrea.Read()
/NetworkStrea.Write()
사용
- TCP -> NetworkStream 사용