달력

02

« 2012/02 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  
2008/11/30 23:58

Socket Class General .NET2008/11/30 23:58


필요한 네임스페이스

System.Net, System.Net.Sockets

 

System.Net.Sockets.Socket 클래스의 특징

- 클라이언트 응용프로그램과 서버 응용 프로그램에서도 소켓으로 사용 가능

- 동기, 비동기 동작을 모두 사용가능

 

endpoint

- 네트워크 케이블의 양 끝(종단점)

- 네트워크에 대한 읽기, 쓰기를 수행

 

클라이언트와 서버 응용 프로그램은 소켓 연결을 통해서 통신하고 바이트 스트림을 주고 받는다. 다른 소켓으로 메시지를 보내기 위해서는 응용 플로그램을 제공하는 PC의 아이피 주소와 소프트웨어의 프로세스 식별자를 알아야 한다.

PC에서 소프트웨어 프로세스 식별자는 포트라고 하는 고유한 숫자를 사용.

따라서 응용 프로그램에서 연결의 반대편 끝에 있는 다른 소켓에 메시지를 전달하려면 상대편 IP주소와 응용 프로그램의 포트 번호를 알아야 한다.

 

닷넷 프레임워크에서는 소켓의 기능을 System.Net.Sockets.Socket 클래스로 제공.

인터넷을 사용하는 소켓 응용 프로그램을 작성하므로 AddressFamily.InterNetwork를 사용한다.

 

[소캣구성]

소켓 객체를 생성하고 사용하기 위한 Socket 클래스의 생성자

public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)

 

소켓 객체의 생성자는 3가지 열거형 AddressFamily, SocketType, ProtocolType을 인자로 받으며 각 열거형은 System.Net.Sockets 네임스페이스에 정의되어 있다.

 

AddressFamily 열거형

- Socket 객체가 주소를 풀이하기 위해 사용하는 주소 지정 스키마를 정의.

- 여기서는 인터넷을 사용하므로 AddressFamily.InterNetWork를 사용.

 

SocketType 열거형

- 소켓의 종류를 지정, 가장 많이 사용되는 소켓의 종류는 SocketType.Stream

- Stream은 양방향 연결 기반 바이트 스트림을 제공.

 

ProtocolType 열거형

- 소켓이 통신을 하기 위해 사용하는 저수준 프로토콜의 종류를 지정.

- TCP, AddresssFamily.InterNetwork를 사용해야 함.

 

) 소켓객체의 인스턴스를 생성

Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

 

[원격서버에 연결하기]

Socket클래스의 Connect()를 사용하여 원격서버에 연결.(동기적 시도)

Connect() 메소드의 서명

- public void Connect( EndPoint remoteEP);

 

Connect() 메소드 인자

- System.Net.EndPoint 클래스의 인스턴스

- EndPoint 클래스는 추상 클래스로 네트워크 주소를 의미한다

- EndPoint 클래스의 하위 클래스는 System.Net.IPEndPoint

- Connect() 메소드를 사용할 때는 연결하려는 원격 서버의 IP 주소와 포트 번호를 포함한 IPEndPoint 객체를 인자로 사용해야 함.

 

IPEndPoint객체의 2가지 생성자

public IPEndPoint(long address, int port);

public IPEndPoint(IPAddress address, int port); (가장 자주 사용함)

저작자 표시 비영리 변경 금지
Posted by -세티-