Sockets
Sockets.Sockets
— ModuleSockets.connect
— Methodconnect([host], port::Integer) -> TCPSocket
host
üzerinde port
numarasına bağlanın.
Sockets.connect
— Methodconnect(path::AbstractString) -> PipeEndpoint
path
'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) -> 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.
Sockets.listen
— Methodlisten(path::AbstractString) -> PipeServer
Adlandı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) -> 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"
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.
Sockets.getipaddr
— Functiongetipaddr() -> 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
.
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
— TypeDNSError
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.
Sockets.getnameinfo
— Functiongetnameinfo(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"
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) -> IPv4
IP 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) -> IPv4
Bir 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) -> IPv6
IP 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) -> IPv6
Bir IPv6 adresi dizesini IPv6
nesnesine ayrıştırır.
Örnekler
julia> IPv6("::1")
ip"::1"
Sockets.@ip_str
— Macro@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"
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.
ipv6only
parametresi çift yığın modunu devre dışı bırakır. Eğeripv6only=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.
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
[...]
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ılacaksatrue
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
).
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.