Sockets
Sockets.Sockets — ModuleSockets.connect — Methodconnect([host], port::Integer) -> TCPSockethost üzerinde port numarasına bağlanın.
Sockets.connect — Methodconnect(path::AbstractString) -> PipeEndpointpath'teki adlandırılmış boruya / UNIX alan soketine bağlanın.
Unix'te yol uzunluğu 92 ile 108 byte arasında bir yere sınırlıdır (bkz. man unix).
Sockets.listen — Methodlisten([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServerBelirtilen 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.
Sockets.listen — Methodlisten(path::AbstractString) -> PipeServerAdlandırılmış bir boru / UNIX alan soketi oluşturun ve dinleyin.
Unix'te yol uzunluğu 92 ile 108 bayt arasında bir yere kadar sınırlıdır (bkz. man unix).
Sockets.getaddrinfo — Functiongetaddrinfo(host::AbstractString, IPAddr) -> IPAddrBelirtilen 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"getaddrinfo(host::AbstractString) -> IPAddrhost'ü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.
Sockets.getipaddr — Functiongetipaddr() -> IPAddrYerel 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 -> TBelirtilen 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.
Sockets.getipaddrs — Functiongetipaddrs(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.
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.
Sockets.islinklocaladdr — Functionislinklocaladdr(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())Sockets.getalladdrinfo — Functiongetalladdrinfo(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"Sockets.DNSError — TypeDNSErrorDNS 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.
Sockets.getnameinfo — Functiongetnameinfo(host::IPAddr) -> StringIP 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"Sockets.getsockname — Functiongetsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)Verilen soketin bağlı olduğu IP adresini ve portu alır.
Sockets.getpeername — Functiongetpeername(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.
Sockets.IPAddr — TypeSockets.IPv4 — TypeIPv4(host::Integer) -> IPv4IP adresi host olarak biçimlendirilmiş bir IPv4 nesnesi döndürür Integer.
Örnekler
julia> IPv4(3223256218)
ip"192.30.252.154"IPv4(str::AbstractString) -> IPv4Bir IPv4 adresi dizesini bir IPv4 nesnesine ayrıştırır.
Örnekler
julia> IPv4("127.0.0.1")
ip"127.0.0.1"Sockets.IPv6 — TypeIPv6(host::Integer) -> IPv6IP adresi host olarak biçimlendirilmiş bir Integer kullanarak bir IPv6 nesnesi döndürün.
Örnekler
julia> IPv6(3223256218)
ip"::c01e:fc9a"IPv6(str::AbstractString) -> IPv6Bir IPv6 adresi dizesini IPv6 nesnesine ayrıştırır.
Örnekler
julia> IPv6("::1")
ip"::1"Sockets.@ip_str — Macro@ip_str str -> IPAddrstr'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"Sockets.TCPSocket — TypeTCPSocket(; 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.
Sockets.UDPSocket — TypeUDPSocket()libuv kullanarak bir UDP soketi açın. UDPSocket, soketin durumunu belirtmek için çeşitli alanlara sahiptir.
Sockets.accept — Functionaccept(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.
Sockets.listenany — Functionlistenany([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.
Base.bind — Functionbind(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.
ipv6onlyparametresi çift yığın modunu devre dışı bırakır. Eğeripv6only=trueise, yalnızca bir IPv6 yığını oluşturulur.- Eğer
reuseaddr=trueise, birden fazla iş parçacığı veya işlem aynı adrese hata vermeden bağlanabilir, ancak yalnızca en son bağlanan trafik alacaktır.
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)
falsejulia> 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
[...]Sockets.send — Functionsend(socket::UDPSocket, host::IPAddr, port::Integer, msg)msg'yi socket üzerinden host:port'a gönder.
Sockets.recv — Functionrecv(socket::UDPSocket)Belirtilen soketten bir UDP paketi okuyun ve alınan baytları döndürün. Bu çağrı bloklanır.
Sockets.recvfrom — Functionrecvfrom(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 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.
Sockets.setopt — Functionsetopt(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ılacaksatrueolarak 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).
Sockets.nagle — Functionnagle(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.
Bu fonksiyon, Julia 1.3 veya daha yenisini gerektirir.
Sockets.quickack — Functionquickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)Linux sistemlerinde, TCP_QUICKACK socket üzerinde devre dışı bırakılır veya etkinleştirilir.