Sockets

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

الاتصال بالمضيف host على المنفذ port.

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

الاتصال بالأنبوب المسمي / مقبس نطاق UNIX في path.

!!! ملاحظة طول المسار في Unix محدود بين 92 و 108 بايت (راجع 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.

!!! ملاحظة طول المسار على Unix محدود بين 92 و 108 بايت (راجع man unix).

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

يحصل على أول عنوان IP لـ host من نوع IPAddr المحدد. يستخدم تنفيذ getaddrinfo الأساسي لنظام التشغيل، والذي قد يقوم ببحث DNS.

أمثلة

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

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

يحصل على أول عنوان IP متاح لـ host، والذي قد يكون إما عنوان 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}

يحصل على جميع عناوين IP لـ host. يستخدم تنفيذ 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

إرجاع كائن IPv4 من عنوان IP host بتنسيق Integer.

أمثلة

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

إرجاع كائن IPv6 من عنوان IP host بتنسيق Integer.

أمثلة

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)

افتح مقبس TCP باستخدام libuv. إذا كان delay صحيحًا، فإن libuv يؤخر إنشاء موصوف ملف المقبس حتى أول استدعاء لـ bind. يحتوي TCPSocket على حقول متنوعة للدلالة على حالة المقبس بالإضافة إلى مخازن الإرسال/الاستقبال الخاصة به.

source
Sockets.UDPSocketType
UDPSocket()

افتح مقبس UDP باستخدام libuv. يحتوي 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 تلقائيًا عند انتهاء المهمة. يتم تمرير أي استثناء غير معالج في المهمة إلى جميع المنتظرين على 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)

إرسال msg عبر socket إلى host:port.

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