Sockets

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

host üzerinde port numarasına bağlanın.

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

path'teki adlandırılmış boruya / UNIX alan soketine bağlanın.

Note

Unix'te yol uzunluğu 92 ile 108 byte arasında bir yere sınırlıdır (bkz. man unix).

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

Belirtilen addr adresinde portta dinleyin. Varsayılan olarak bu yalnızca localhost üzerinde dinler. Tüm arayüzlerde dinlemek için uygun şekilde IPv4(0) veya IPv6(0) geçirin. backlog, sunucunun reddetmeye başlamadan önce bekleyen (henüz accept çağrılmamış) kaç bağlantının olabileceğini belirler. backlog'un varsayılan değeri 511'dir.

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

Adlandırılmış bir boru / UNIX alan soketi oluşturun ve dinleyin.

Not

Unix'te yol uzunluğu 92 ile 108 bayt arasında bir yere kadar sınırlıdır (bkz. man unix).

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

Belirtilen IPAddr türündeki host'un ilk IP adresini alır. İşletim sisteminin temel getaddrinfo uygulamasını kullanır, bu da bir DNS sorgusu yapabilir.

Örnekler

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

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

host'ün ilk mevcut IP adresini alır; bu, ya bir IPv4 ya da bir IPv6 adresi olabilir. İşletim sisteminin temel getaddrinfo uygulamasını kullanır; bu, bir DNS sorgusu yapabilir.

source
Sockets.getipaddrFunction
getipaddr() -> IPAddr

Yerel makinenin IP adresini alır, IPv4'ü IPv6'ya tercih eder. Hiçbir adres mevcut değilse hata fırlatır.

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

Belirtilen türdeki yerel makinenin IP adresini alır. Belirtilen türde hiç adres mevcut değilse hata fırlatır.

Bu fonksiyon, getipaddrs etrafında bir geriye uyumluluk sarmalayıcısıdır. Yeni uygulamalar bunun yerine getipaddrs kullanmalıdır.

Örnekler

julia> getipaddr()
ip"192.168.1.28"

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

Ayrıca bkz. getipaddrs.

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

Yerel makinenin IP adreslerini alır.

İsteğe bağlı addr_type parametresini IPv4 veya IPv6 olarak ayarlamak, yalnızca o türdeki adreslerin döndürülmesini sağlar.

loopback anahtar argümanı, döngüsel adreslerin (örneğin ip"127.0.0.1", ip"::1") dahil edilip edilmeyeceğini belirler.

Julia 1.2

Bu fonksiyon Julia 1.2 itibarıyla mevcuttur.

Örnekler

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"

Ayrıca islinklocaladdr bakınız.

source
Sockets.islinklocaladdrFunction
islinklocaladdr(addr::IPAddr)

Bir IP adresinin bağlantı yerel adresi olup olmadığını test eder. Bağlantı yerel adresleri, ağ segmentlerinin ötesinde benzersiz olma garantisi verilmez, bu nedenle yönlendiriciler bunları iletmez. Bağlantı yerel adresleri 169.254.0.0/16 veya fe80::/10 adres bloklarından gelir.

Örnekler

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

host'un tüm IP adreslerini alır. İşletim sisteminin temel getaddrinfo uygulamasını kullanır, bu da bir DNS sorgusu yapabilir.

Örnekler

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 araması sırasında bir hata oluştuğunda fırlatılan istisna türüdür. host alanı, ana bilgisayar URL dizesini belirtir. code alanı, libuv'ye dayalı hata kodunu belirtir.

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

IP adresi için ters arama yaparak işletim sisteminin temel getnameinfo uygulamasını kullanarak bir ana bilgisayar adı ve hizmet döndürür.

Örnekler

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

Verilen soketin bağlı olduğu IP adresini ve portu alır.

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

Verilen soketin bağlı olduğu uzak uç noktanın IP adresini ve portunu alır. Sadece bağlı TCP soketleri için geçerlidir.

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

IP adresi host olarak biçimlendirilmiş bir IPv4 nesnesi döndürür Integer.

Örnekler

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

Bir IPv4 adresi dizesini bir IPv4 nesnesine ayrıştırır.

Örnekler

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

IP adresi host olarak biçimlendirilmiş bir Integer kullanarak bir IPv6 nesnesi döndürün.

Örnekler

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

Bir IPv6 adresi dizesini IPv6 nesnesine ayrıştırır.

Örnekler

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

str'yi bir IP adresi olarak ayrıştırır.

Örnekler

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 kullanarak bir TCP soketi açar. Eğer delay true ise, libuv soketin dosya tanımlayıcısının oluşturulmasını ilk bind çağrısına kadar geciktirir. TCPSocket, soketin durumunu ve gönderme/alma tamponlarını belirtmek için çeşitli alanlara sahiptir.

source
Sockets.UDPSocketType
UDPSocket()

libuv kullanarak bir UDP soketi açın. UDPSocket, soketin durumunu belirtmek için çeşitli alanlara sahiptir.

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

Verilen sunucuda bir bağlantıyı kabul eder ve istemciye bir bağlantı döndürür. Başlangıçta tanımlanmamış bir istemci akışı sağlanabilir; bu durumda, yeni bir akış oluşturmak yerine bu kullanılacaktır.

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

Herhangi bir portta bir TCPServer oluşturun, ipucu başlangıç noktası olarak kullanılır. Sunucunun oluşturulduğu gerçek port ve sunucunun kendisi bir demet olarak döndürülür. backlog argümanı, sockfd için bekleyen bağlantıların kuyruğunun büyüyebileceği maksimum uzunluğu tanımlar.

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

socket'ı verilen host:port'a bağlayın. 0.0.0.0'ın tüm cihazlarda dinleyeceğini unutmayın.

  • ipv6only parametresi çift yığın modunu devre dışı bırakır. Eğer ipv6only=true ise, yalnızca bir IPv6 yığını oluşturulur.
  • Eğer reuseaddr=true ise, birden fazla iş parçacığı veya işlem aynı adrese hata vermeden bağlanabilir, ancak yalnızca en son bağlanan trafik alacaktır.
source
bind(chnl::Channel, task::Task)

chnl'nin ömrünü bir görevle ilişkilendirir. Channel chnl, görev sona erdiğinde otomatik olarak kapatılır. Görevde yakalanmamış herhangi bir istisna, chnl üzerindeki tüm bekleyenlere iletilir.

chnl nesnesi, görev sona ermesinden bağımsız olarak açıkça kapatılabilir. Sona eren görevler, zaten kapatılmış Channel nesneleri üzerinde hiçbir etkiye sahip değildir.

Bir kanal birden fazla göreve bağlandığında, ilk sona eren görev kanalı kapatır. Aynı göreve bağlı birden fazla kanal olduğunda, görevin sona ermesi tüm bağlı kanalları kapatır.

Örnekler

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);
HATA: TaskFailedException
Stacktrace:
[...]
    nested task error: foo
[...]
source
Sockets.sendFunction
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)

msg'yi socket üzerinden host:port'a gönder.

source
Sockets.recvFunction
recv(socket::UDPSocket)

Belirtilen soketten bir UDP paketi okuyun ve alınan baytları döndürün. Bu çağrı bloklanır.

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

Belirtilen soketten bir UDP paketi okuyun ve (host_port, data) şeklinde bir demet döndürün; burada host_port, uygun olduğunda bir InetAddr{IPv4} veya InetAddr{IPv6} olacaktır.

Julia 1.3

Julia sürüm 1.3'ten önce, döndürülen ilk değer bir adresdi (IPAddr). Sürüm 1.3'te InetAddr olarak değiştirildi.

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

UDP soket seçeneklerini ayarlayın.

  • multicast_loop: çoklu yayım paketleri için geri döngü (varsayılan: true).
  • multicast_ttl: çoklu yayım paketleri için TTL (varsayılan: nothing).
  • enable_broadcast: soket yayın mesajları için kullanılacaksa true olarak ayarlanmalıdır, aksi takdirde UDP sistemi bir erişim hatası döndürecektir (varsayılan: false).
  • ttl: soket üzerinden gönderilen paketlerin yaşam süresi (varsayılan: nothing).
source
Sockets.nagleFunction
nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)

Nagle algoritması, birden fazla küçük TCP paketini daha büyük olanlar halinde toplar. Bu, verimliliği artırabilir ancak gecikmeyi kötüleştirebilir. Nagle algoritması varsayılan olarak etkindir. Bu fonksiyon, belirli bir TCP sunucusunda veya soketinde Nagle algoritmasının aktif olup olmadığını ayarlar. Karşıt seçenek, diğer dillerde TCP_NODELAY olarak adlandırılır.

Julia 1.3

Bu fonksiyon, Julia 1.3 veya daha yenisini gerektirir.

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

Linux sistemlerinde, TCP_QUICKACK socket üzerinde devre dışı bırakılır veya etkinleştirilir.

source