Sockets

Sockets.connectMethod
connect([host], port::Integer) -> TCPSocket

호스트 host에 포트 port로 연결합니다.

source
Sockets.connectMethod
connect(path::AbstractString) -> PipeEndpoint

지정된 경로의 이름 있는 파이프 / UNIX 도메인 소켓에 연결합니다.

Note

Unix에서 경로 길이는 92바이트에서 108바이트 사이로 제한됩니다 (cf. man unix).

source
Sockets.listenMethod
listen([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServer

지정된 addr 주소의 포트에서 수신합니다. 기본적으로 이는 localhost에서만 수신합니다. 모든 인터페이스에서 수신하려면 적절하게 IPv4(0) 또는 IPv6(0)를 전달하십시오. backlog는 서버가 연결을 거부하기 시작하기 전에 대기할 수 있는 연결 수( accept를 호출하지 않은 상태)를 결정합니다. backlog의 기본값은 511입니다.

source
Sockets.listenMethod
listen(path::AbstractString) -> PipeServer

이름이 있는 파이프 / UNIX 도메인 소켓을 생성하고 수신합니다.

Note

Unix에서 경로 길이는 92바이트에서 108바이트 사이로 제한됩니다 (cf. man unix).

source
Sockets.getaddrinfoFunction
getaddrinfo(host::AbstractString, IPAddr) -> IPAddr

지정된 IPAddr 유형의 host의 첫 번째 IP 주소를 가져옵니다. 운영 체제의 기본 getaddrinfo 구현을 사용하며, 이는 DNS 조회를 수행할 수 있습니다.

예제

julia> getaddrinfo("localhost", IPv6)
ip"::1"

julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"
source
getaddrinfo(host::AbstractString) -> IPAddr

host의 첫 번째 사용 가능한 IP 주소를 가져옵니다. 이 주소는 IPv4 또는 IPv6 주소일 수 있습니다. 운영 체제의 기본 getaddrinfo 구현을 사용하며, 이 구현은 DNS 조회를 수행할 수 있습니다.

source
Sockets.getipaddrFunction
getipaddr() -> IPAddr

로컬 머신의 IP 주소를 가져오며, IPv4를 IPv6보다 우선시합니다. 주소가 없으면 예외를 발생시킵니다.

getipaddr(addr_type::Type{T}) where T<:IPAddr -> T

지정된 유형의 로컬 머신의 IP 주소를 가져옵니다. 지정된 유형의 주소가 없으면 예외를 발생시킵니다.

이 함수는 getipaddrs에 대한 하위 호환성 래퍼입니다. 새로운 애플리케이션은 대신 getipaddrs를 사용해야 합니다.

예제

julia> getipaddr()
ip"192.168.1.28"

julia> getipaddr(IPv6)
ip"fe80::9731:35af:e1c5:6e49"

또한 getipaddrs를 참조하십시오.

source
Sockets.getipaddrsFunction
getipaddrs(addr_type::Type{T}=IPAddr; loopback::Bool=false) where T<:IPAddr -> Vector{T}

로컬 머신의 IP 주소를 가져옵니다.

선택적 addr_type 매개변수를 IPv4 또는 IPv6로 설정하면 해당 유형의 주소만 반환됩니다.

loopback 키워드 인자는 루프백 주소(예: ip"127.0.0.1", ip"::1")가 포함될지 여부를 결정합니다.

Julia 1.2

이 함수는 Julia 1.2부터 사용할 수 있습니다.

예제

julia> getipaddrs()
5-element Array{IPAddr,1}:
 ip"198.51.100.17"
 ip"203.0.113.2"
 ip"2001:db8:8:4:445e:5fff:fe5d:5500"
 ip"2001:db8:8:4:c164:402e:7e3c:3668"
 ip"fe80::445e:5fff:fe5d:5500"

julia> getipaddrs(IPv6)
3-element Array{IPv6,1}:
 ip"2001:db8:8:4:445e:5fff:fe5d:5500"
 ip"2001:db8:8:4:c164:402e:7e3c:3668"
 ip"fe80::445e:5fff:fe5d:5500"

또한 islinklocaladdr를 참조하세요.

source
Sockets.islinklocaladdrFunction
islinklocaladdr(addr::IPAddr)

IP 주소가 링크 로컬 주소인지 테스트합니다. 링크 로컬 주소는 네트워크 세그먼트를 넘어서는 고유성이 보장되지 않으므로 라우터가 이를 전달하지 않습니다. 링크 로컬 주소는 주소 블록 169.254.0.0/16 또는 fe80::/10에서 나옵니다.

예제

filter(!islinklocaladdr, getipaddrs())
source
Sockets.getalladdrinfoFunction
getalladdrinfo(host::AbstractString) -> Vector{IPAddr}

host의 모든 IP 주소를 가져옵니다. 운영 체제의 기본 getaddrinfo 구현을 사용하며, 이는 DNS 조회를 수행할 수 있습니다.

예제

julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
 ip"172.217.6.174"
 ip"2607:f8b0:4000:804::200e"
source
Sockets.DNSErrorType
DNSError

DNS 조회 중 오류가 발생할 때 발생하는 예외의 유형입니다. host 필드는 호스트 URL 문자열을 나타냅니다. code 필드는 libuv를 기반으로 한 오류 코드를 나타냅니다.

source
Sockets.getnameinfoFunction
getnameinfo(host::IPAddr) -> String

IP 주소에 대한 역 조회를 수행하여 운영 체제의 기본 getnameinfo 구현을 사용하여 호스트 이름과 서비스를 반환합니다.

예제

julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"
source
Sockets.getsocknameFunction
getsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)

주어진 소켓이 바인딩된 IP 주소와 포트를 가져옵니다.

source
Sockets.getpeernameFunction
getpeername(sock::TCPSocket) -> (IPAddr, UInt16)

주어진 소켓이 연결된 원격 엔드포인트의 IP 주소와 포트를 가져옵니다. 연결된 TCP 소켓에 대해서만 유효합니다.

source
Sockets.IPv4Type
IPv4(host::Integer) -> IPv4

IP 주소 host에서 Integer 형식으로 IPv4 객체를 반환합니다.

예제

julia> IPv4(3223256218)
ip"192.30.252.154"
source
IPv4(str::AbstractString) -> IPv4

IPv4 주소 문자열을 IPv4 객체로 파싱합니다.

예제

julia> IPv4("127.0.0.1")
ip"127.0.0.1"
source
Sockets.IPv6Type
IPv6(host::Integer) -> IPv6

IP 주소 hostInteger 형식으로 변환하여 IPv6 객체를 반환합니다.

예제

julia> IPv6(3223256218)
ip"::c01e:fc9a"
source
IPv6(str::AbstractString) -> IPv6

IPv6 주소 문자열을 IPv6 객체로 파싱합니다.

예시

julia> IPv6("::1")
ip"::1"
source
Sockets.@ip_strMacro
@ip_str str -> IPAddr

str를 IP 주소로 파싱합니다.

예시

julia> ip"127.0.0.1"
ip"127.0.0.1"

julia> @ip_str "2001:db8:0:0:0:0:2:1"
ip"2001:db8::2:1"
source
Sockets.TCPSocketType
TCPSocket(; delay=true)

libuv를 사용하여 TCP 소켓을 엽니다. delay가 true인 경우, libuv는 첫 번째 bind 호출까지 소켓의 파일 디스크립터 생성을 지연시킵니다. TCPSocket은 소켓의 상태와 전송/수신 버퍼를 나타내는 다양한 필드를 가지고 있습니다.

source
Sockets.UDPSocketType
UDPSocket()

libuv를 사용하여 UDP 소켓을 엽니다. UDPSocket은 소켓의 상태를 나타내는 다양한 필드를 가지고 있습니다.

source
Sockets.acceptFunction
accept(server[, client])

주어진 서버에서 연결을 수락하고 클라이언트에 대한 연결을 반환합니다. 초기화되지 않은 클라이언트 스트림이 제공될 수 있으며, 이 경우 새 스트림을 생성하는 대신 해당 스트림이 사용됩니다.

source
Sockets.listenanyFunction
listenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)

임의의 포트에서 TCPServer를 생성하며, 힌트를 시작점으로 사용합니다. 서버가 생성된 실제 포트와 서버 자체의 튜플을 반환합니다. backlog 인자는 sockfd에 대한 대기 중인 연결의 최대 길이를 정의합니다.

source
Base.bindFunction
bind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)

socket을 주어진 host:port에 바인딩합니다. 0.0.0.0은 모든 장치에서 수신 대기합니다.

  • ipv6only 매개변수는 이중 스택 모드를 비활성화합니다. ipv6only=true인 경우, IPv6 스택만 생성됩니다.
  • reuseaddr=true인 경우, 여러 스레드나 프로세스가 모두 reuseaddr=true로 설정하면 동일한 주소에 바인딩할 수 있지만, 마지막으로 바인딩한 것만 트래픽을 수신합니다.
source
bind(chnl::Channel, task::Task)

chnl의 생명주기를 작업에 연결합니다. Channel chnl은 작업이 종료될 때 자동으로 닫힙니다. 작업에서 발생한 모든 uncaught 예외는 chnl의 모든 대기자에게 전파됩니다.

chnl 객체는 작업 종료와 관계없이 명시적으로 닫을 수 있습니다. 종료된 작업은 이미 닫힌 Channel 객체에 영향을 미치지 않습니다.

하나의 채널이 여러 작업에 바인딩될 때, 가장 먼저 종료된 작업이 채널을 닫습니다. 여러 채널이 동일한 작업에 바인딩될 때, 작업의 종료는 모든 바인딩된 채널을 닫습니다.

예제

julia> c = Channel(0);

julia> task = @async foreach(i->put!(c, i), 1:4);

julia> bind(c,task);

julia> for i in c
           @show i
       end;
i = 1
i = 2
i = 3
i = 4

julia> isopen(c)
false
julia> c = Channel(0);

julia> task = @async (put!(c, 1); error("foo"));

julia> bind(c, task);

julia> take!(c)
1

julia> put!(c, 1);
ERROR: TaskFailedException
Stacktrace:
[...]
    nested task error: foo
[...]
source
Sockets.sendFunction
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)

sock을 통해 host:portmsg를 전송합니다.

source
Sockets.recvFunction
recv(socket::UDPSocket)

지정된 소켓에서 UDP 패킷을 읽고 수신된 바이트를 반환합니다. 이 호출은 차단됩니다.

source
Sockets.recvfromFunction
recvfrom(socket::UDPSocket) -> (host_port, data)

지정된 소켓에서 UDP 패킷을 읽고 (host_port, data)의 튜플을 반환합니다. 여기서 host_port는 적절하게 InetAddr{IPv4} 또는 InetAddr{IPv6}가 됩니다.

Julia 1.3

Julia 버전 1.3 이전에는 첫 번째 반환 값이 주소(IPAddr)였습니다. 버전 1.3에서는 InetAddr로 변경되었습니다.

source
Sockets.setoptFunction
setopt(sock::UDPSocket; multicast_loop=nothing, multicast_ttl=nothing, enable_broadcast=nothing, ttl=nothing)

UDP 소켓 옵션을 설정합니다.

  • multicast_loop: 멀티캐스트 패킷에 대한 루프백 (기본값: true).
  • multicast_ttl: 멀티캐스트 패킷에 대한 TTL (기본값: nothing).
  • enable_broadcast: 소켓이 브로드캐스트 메시지에 사용될 경우 true로 설정해야 하며, 그렇지 않으면 UDP 시스템이 접근 오류를 반환합니다 (기본값: false).
  • ttl: 소켓을 통해 전송되는 패킷의 생존 시간 (기본값: nothing).
source
Sockets.nagleFunction
nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)

네이글 알고리즘은 여러 개의 작은 TCP 패킷을 더 큰 패킷으로 묶습니다. 이는 처리량을 개선할 수 있지만 지연 시간을 악화시킬 수 있습니다. 네이글 알고리즘은 기본적으로 활성화되어 있습니다. 이 함수는 주어진 TCP 서버 또는 소켓에서 네이글 알고리즘이 활성화되어 있는지 설정합니다. 반대 옵션은 다른 언어에서 TCP_NODELAY라고 불립니다.

Julia 1.3

이 함수는 Julia 1.3 이상이 필요합니다.

source
Sockets.quickackFunction
quickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)

리눅스 시스템에서는 TCP_QUICKACK가 socket에서 비활성화되거나 활성화됩니다.

source