Sockets
Sockets.Sockets — ModuleSockets.connect — Methodconnect([host], port::Integer) -> TCPSocketالاتصال بالمضيف host على المنفذ port.
Sockets.connect — Methodconnect(path::AbstractString) -> PipeEndpointالاتصال بالأنبوب المسمي / مقبس نطاق UNIX في path.
!!! ملاحظة طول المسار في Unix محدود بين 92 و 108 بايت (راجع man unix).
Sockets.listen — Methodlisten([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServerاستمع على المنفذ على العنوان المحدد بواسطة addr. بشكل افتراضي، يستمع هذا فقط على localhost. للاستماع على جميع الواجهات، مرر IPv4(0) أو IPv6(0) حسب الاقتضاء. يحدد backlog عدد الاتصالات التي يمكن أن تكون في الانتظار (لم يتم استدعاء accept) قبل أن يبدأ الخادم في رفضها. القيمة الافتراضية لـ backlog هي 511.
Sockets.listen — Methodlisten(path::AbstractString) -> PipeServerإنشاء والاستماع على أنبوب مسمى / مقبس نطاق UNIX.
!!! ملاحظة طول المسار على Unix محدود بين 92 و 108 بايت (راجع man unix).
Sockets.getaddrinfo — Functiongetaddrinfo(host::AbstractString, IPAddr) -> IPAddrيحصل على أول عنوان IP لـ host من نوع IPAddr المحدد. يستخدم تنفيذ getaddrinfo الأساسي لنظام التشغيل، والذي قد يقوم ببحث DNS.
أمثلة
julia> getaddrinfo("localhost", IPv6)
ip"::1"
julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"getaddrinfo(host::AbstractString) -> IPAddrيحصل على أول عنوان IP متاح لـ host، والذي قد يكون إما عنوان IPv4 أو IPv6. يستخدم تنفيذ getaddrinfo الأساسي لنظام التشغيل، والذي قد يقوم ببحث DNS.
Sockets.getipaddr — Functiongetipaddr() -> 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.
Sockets.getipaddrs — Functiongetipaddrs(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> 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.
Sockets.islinklocaladdr — Functionislinklocaladdr(addr::IPAddr)يختبر ما إذا كان عنوان IP هو عنوان محلي للربط. العناوين المحلية للربط ليست مضمونة أن تكون فريدة خارج شريحة الشبكة الخاصة بها، لذلك لا تقوم أجهزة التوجيه بإعادة توجيهها. العناوين المحلية للربط تأتي من كتل العناوين 169.254.0.0/16 أو fe80::/10.
أمثلة
filter(!islinklocaladdr, getipaddrs())Sockets.getalladdrinfo — Functiongetalladdrinfo(host::AbstractString) -> Vector{IPAddr}يحصل على جميع عناوين IP لـ host. يستخدم تنفيذ getaddrinfo الأساسي لنظام التشغيل، والذي قد يقوم بعملية بحث DNS.
أمثلة
julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
ip"172.217.6.174"
ip"2607:f8b0:4000:804::200e"Sockets.DNSError — TypeDNSErrorنوع الاستثناء الذي يتم رميه عندما يحدث خطأ في بحث DNS. يشير حقل host إلى سلسلة عنوان URL للمضيف. يشير حقل code إلى رمز الخطأ بناءً على libuv.
Sockets.getnameinfo — Functiongetnameinfo(host::IPAddr) -> Stringيؤدي إلى بحث عكسي عن عنوان IP لإرجاع اسم المضيف والخدمة باستخدام تنفيذ getnameinfo الأساسي لنظام التشغيل.
أمثلة
julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"Sockets.getsockname — Functiongetsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)احصل على عنوان IP والمنفذ الذي تم ربط المقبس المعطى به.
Sockets.getpeername — Functiongetpeername(sock::TCPSocket) -> (IPAddr, UInt16)احصل على عنوان IP ورقم المنفذ لنقطة النهاية البعيدة التي يتصل بها المقبس المعطى. صالح فقط لمقابس TCP المتصلة.
Sockets.IPAddr — TypeSockets.IPv4 — TypeIPv4(host::Integer) -> IPv4إرجاع كائن IPv4 من عنوان IP host بتنسيق Integer.
أمثلة
julia> IPv4(3223256218)
ip"192.30.252.154"IPv4(str::AbstractString) -> IPv4تحليل سلسلة عنوان IPv4 إلى كائن IPv4.
أمثلة
julia> IPv4("127.0.0.1")
ip"127.0.0.1"Sockets.IPv6 — TypeIPv6(host::Integer) -> IPv6إرجاع كائن IPv6 من عنوان IP host بتنسيق Integer.
أمثلة
julia> IPv6(3223256218)
ip"::c01e:fc9a"IPv6(str::AbstractString) -> IPv6تحليل سلسلة عنوان IPv6 إلى كائن IPv6.
أمثلة
julia> IPv6("::1")
ip"::1"Sockets.@ip_str — Macro@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"Sockets.TCPSocket — TypeTCPSocket(; delay=true)افتح مقبس TCP باستخدام libuv. إذا كان delay صحيحًا، فإن libuv يؤخر إنشاء موصوف ملف المقبس حتى أول استدعاء لـ bind. يحتوي TCPSocket على حقول متنوعة للدلالة على حالة المقبس بالإضافة إلى مخازن الإرسال/الاستقبال الخاصة به.
Sockets.UDPSocket — TypeUDPSocket()افتح مقبس UDP باستخدام libuv. يحتوي UDPSocket على حقول مختلفة للدلالة على حالة المقبس.
Sockets.accept — Functionaccept(server[, client])يقبل اتصالاً على الخادم المعطى ويعيد اتصالاً بالعميل. يمكن توفير دفق عميل غير مُهيأ، وفي هذه الحالة سيتم استخدامه بدلاً من إنشاء دفق جديد.
Sockets.listenany — Functionlistenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)قم بإنشاء TCPServer على أي منفذ، باستخدام التلميح كنقطة انطلاق. تُرجع مجموعة من المنفذ الفعلي الذي تم إنشاء الخادم عليه والخادم نفسه. تحدد حجة backlog الطول الأقصى الذي يمكن أن تنمو إليه قائمة الاتصالات المعلقة لـ sockfd.
Base.bind — Functionbind(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، ولكن فقط الأخير الذي يقوم بالربط سيتلقى أي حركة مرور.
bind(chnl::Channel, task::Task)ربط عمر chnl بمهمة. يتم إغلاق Channel chnl تلقائيًا عند انتهاء المهمة. يتم تمرير أي استثناء غير معالج في المهمة إلى جميع المنتظرين على 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)
falsejulia> 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
[...]Sockets.send — Functionsend(socket::UDPSocket, host::IPAddr, port::Integer, msg)إرسال msg عبر socket إلى host:port.
Sockets.recv — Functionrecv(socket::UDPSocket)اقرأ حزمة UDP من المقبس المحدد، وأعد البايتات المستلمة. هذه المكالمة تحجب.
Sockets.recvfrom — Functionrecvfrom(socket::UDPSocket) -> (host_port, data)اقرأ حزمة UDP من المقبس المحدد، معيدًا زوجًا من (host_port, data)، حيث سيكون host_port عنوان InetAddr{IPv4} أو InetAddr{IPv6}، حسب الاقتضاء.
قبل إصدار Julia 1.3، كانت القيمة الأولى المعادة عنوانًا (IPAddr). في الإصدار 1.3 تم تغييره إلى InetAddr.
Sockets.setopt — Functionsetopt(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).
Sockets.nagle — Functionnagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)تجمع خوارزمية ناغل حزم TCP الصغيرة المتعددة في حزم أكبر. يمكن أن يحسن ذلك من خلال نقل البيانات ولكن قد يؤدي إلى زيادة زمن الاستجابة. خوارزمية ناغل مفعلة بشكل افتراضي. تقوم هذه الدالة بتحديد ما إذا كانت خوارزمية ناغل نشطة على خادم TCP أو مقبس معين. الخيار المعاكس يسمى TCP_NODELAY في لغات أخرى.
تتطلب هذه الدالة Julia 1.3 أو أحدث.
Sockets.quickack — Functionquickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)في أنظمة لينكس، يتم تعطيل أو تمكين TCP_QUICKACK على socket.