The INetSock 구조

The INetSock 구조

이 구조는 인터넷 도메인 주소와 소켓을 만들고 다루는 연산을 제공해요.

출처: 문서

본문

시놉시스 (Synopsis)

signature INET_SOCK (* OPTIONAL *)
structure INetSock :> INET_SOCK (* OPTIONAL *)

인터페이스 (Interface)

type inet
type 'sock_type sock = (inet, 'sock_type) Socket.sock
type 'mode stream_sock = 'mode Socket.stream sock
type dgram_sock = Socket.dgram sock
type sock_addr = inet Socket.sock_addr
val inetAF : Socket.AF.addr_family
val toAddr : NetHostDB.in_addr * int -> sock_addr
val fromAddr : sock_addr -> NetHostDB.in_addr * int
val any : int -> sock_addr
structure UDP : sig
val socket : unit -> dgram_sock
val socket' : int -> dgram_sock
end
structure TCP : sig
val socket : unit -> 'mode stream_sock
val socket' : int -> 'mode stream_sock
val getNODELAY : 'mode stream_sock -> bool
val setNODELAY : 'mode stream_sock * bool -> unit
end

설명 (Description)

type inet

INet 주소 패밀리의 증인(witness) 타입이에요.

type 'mode stream_sock = 'mode Socket.stream sock

인터넷 도메인 스트림 소켓의 타입 스킴이에요. 타입 매개변수 'modeSocket.active 또는 Socket.passive로 인스턴스화될 수 있어요.

type dgram_sock = Socket.dgram sock

인터넷 도메인 데이터그램 소켓의 타입이에요.

type sock_addr = inet Socket.sock_addr

인터넷 도메인 소켓 주소의 타입이에요.

val inetAF : Socket.AF.addr_family

인터넷 도메인을 나타내는 주소 패밀리 값이에요.

toAddr (ia, i)

인터넷 주소 ia와 포트 번호 i를 (INet 주소 패밀리의) 소켓 주소로 변환해요.

val fromAddr : sock_addr -> NetHostDB.in_addr * int

(INet 주소 패밀리의) 소켓 주소를 인터넷 주소 ia와 포트 번호 i의 쌍 (ia,i)으로 변환해요.

any port

포트를 port로 고정하되 인터넷 주소는 지정하지 않는 소켓 주소를 만들어요. 이 함수는 C 소켓 API의 INADDR_ANY 상수에 해당해요. 이 함수가 만든 값으로 소켓을 특정 포트에 바인드해요.

structure UDP

INet 주소 패밀리에서 기본 프로토콜로 데이터그램 소켓을 만들어요. 사용 중인 소켓이 너무 많으면 SysErr를 발생시켜요.

val socket : unit -> dgram_sock

INet 주소 패밀리에서 프로토콜 번호 prot로 데이터그램 소켓을 만들어요. prot의 해석은 시스템 의존적이지만 0 값은 socket()과 동등해요. 사용 중인 소켓이 너무 많으면 SysErr를 발생시켜요.

socket' prot

INet 주소 패밀리에서 기본 프로토콜로 스트림 소켓을 만들어요. 사용 중인 소켓이 너무 많으면 SysErr를 발생시켜요.

structure TCP

INet 주소 패밀리에서 프로토콜 번호 prot로 스트림 소켓을 만들어요. prot의 해석은 시스템 의존적이지만 0 값은 socket()과 동등해요.

val socket : unit -> 'mode stream_sock

이 함수들은 소켓의 TCP_NODELAY 플래그를 조회하고 설정해요. false(기본값)로 설정하면 주어진 TCP 연결에서 한 번에 하나의 작은 패킷만 전송이 가능해 느린 WAN에서 작은 패킷 트래픽을 줄여줘요. true로 설정하면 패킷을 최대한 빨리 보내요.

socket' prot

INet 주소 패밀리에서 프로토콜 번호 prot로 스트림 소켓을 만들어요. prot의 해석은 시스템 의존적이지만 값 0은 socket()과 동등해요.

val getNODELAY : 'mode stream_sock -> bool
val setNODELAY : 'mode stream_sock * bool -> unit

이 함수들은 소켓의 TCP_NODELAY 플래그를 조회하고 설정해요. false(기본값)로 설정하면 주어진 TCP 연결에서 한 번에 하나의 작은 패킷만 미전송 상태로 허용되어 느린 WAN에서 작은 패킷 트래픽을 줄여줘요. true로 설정하면 패킷을 가능한 한 빨리 보내요. [[Stevens, p.316 참조.]]

더 알아보기 (Learn more)

  • [ Top | Parent | Contents | Index | Root ] Generated April 12
  • 2004 Last Modified June 5
  • 1998 Comments to John Reppy. This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy. Copyright © 2004 AT&T and Lucent Technologies. All rights reserved. Permission is granted for internet users to make one paper copy for their own personal use. Further hardcopy reproduction is strictly prohibited. Permission to distribute the HTML document electronically on any medium other than the internet must be requested from the copyright holders by contacting the editors. Printed versions of the SML Basis Manual are available from Cambridge University Press. To order
  • please visit www.cup.org (North America) or www.cup.cam.ac.uk (outside North America).