getpeername(2)

الاسم
getpeername - الحصول على اسم المقبس النظير المتصل

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/socket.h>

int getpeername(int sockfd, struct sockaddr *restrict addr,
                socklen_t *restrict addrlen);

الوصف
ترجع getpeername() عنوان النظير المتصل بالمقبس sockfd، في المخزن المؤقت المشار إليه بواسطة addr. يجب تهيئة وسيط addrlen للإشارة إلى مقدار المساحة المشار إليها بواسطة addr. عند العودة، يحتوي على الحجم الفعلي للاسم المُعاد (بالبايت). يُبتَر الاسم إذا كان المخزن المؤقت المُقدم صغيرًا جدًا.

يُبتر العنوان المُعاد إذا كان المخزن المؤقت المقدم صغيرًا جدًا؛ وفي هذه الحالة، سيعيد addrlen قيمة أكبر مما تم تمريره للاستدعاء.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EBADF
    المعامل sockfd ليس واصف ملف صالح.

EFAULT
    يُشير المعامل addr إلى ذاكرة ليست في جزء صالح من مساحة عناوين العملية.

EINVAL
    addrlen غير صالح (مثلاً، قيمته سالبة).

ENOBUFS
    الموارد المتوفرة في النظام غير كافية لإجراء العملية.

ENOTCONN
    المقبس غير متصل.

ENOTSOCK
    واصف الملف sockfd لا يشير إلى مقبس.

المعايير
POSIX.1-2024.

التاريخ
POSIX.1-2001, SVr4, 4.4BSD (ظهر أول مرة في 4.2BSD).

ملاحظات
بالنسبة لمقابس التدفق، بمجرد تنفيذ connect(2)، يمكن لأي من المقبسين استدعاء getpeername() للحصول على عنوان مقبس النظير. من ناحية أخرى، مقابس البيانات (datagram) هي بدون اتصال. استدعاء connect(2) على مقبس بيانات يضبط فقط عنوان النظير للبيانات الصادرة المُرسلة مع write(2) أو recv(2). يمكن لمستدعي connect(2) استخدام getpeername() للحصول على عنوان النظير الذي عيّنه سابقًا للمقبس. ومع ذلك، فإن مقبس النظير غير مُطّلع على هذه المعلومات، ولن يُرجع استدعاء getpeername() على مقبس النظير أي معلومات مفيدة (إلا إذا تم أيضًا تنفيذ استدعاء connect(2) على النظير). لاحظ أيضًا أن مستقبل البيانات يمكنه الحصول على عنوان المُرسل عند استخدام recvfrom(2).

انظر أيضًا
accept(2), bind(2), getsockname(2), ip(7), socket(7), unix(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.