سؤال

لذلك هذا هو حقا سؤال جزءين مع أول مما يؤدي إلى الثانية.

أنا أعمل على مشروع خادم PHP وأنا مرتبك بعض الشيء مع كل الطرق المختلفة التي يمكنني إنشاء مقبس.لقد تمكنت من إنشاء ثلاثة مآخذ لكل منها باستخدام طريقة جديدة.هل يعرف أحد الفرق الأساسي بين هذه الأساليب الثلاث إن وجدت؟

الطريقة الأولى باستخدام "socket_create" giveacodicetagpre.

الطريقة 2 باستخدام "fsockopen" giveacodicetagpre.

الطريقة الثالثة باستخدام "stream_socket_client" giveacodicetagpre.

على الرغم من أنني لا أفهم الفرق الذي كنت أستكشف جميع الخيارات الثلاثة التي تبحث عن طريقة للتحكم في حجم نافذة TCP.أحاول دفع حزمة إلى عميل على شبكة LAN الخاصة بي التي تحتوي على حمولة بيانات من 1460 بايت وبعد مراجعة حزمة التقاط حزمة بيانات TCP من حزمتي يتم قطعها دائما قصيرة في 1448 بايت.أي أفكار؟

شكرا مقدما!

هل كانت مفيدة؟

المحلول

You can't control the actual amount of data received at a time. TCP is a streaming protocol. It presents a byte-stream API to the application. You just have to be prepared to read and re-read until you have got what you want.

نصائح أخرى

You should be able to do this with the socket_set_option command (where options are documented in the socket_get_option command):

$Socket1 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
// send window
socket_set_option($Socket1, SOL_SOCKET, SO_SNDBUF, 1460);

Just be sure to call it right after socket_create. If you need the receive window modified:

socket_set_option($Socket1, SOL_SOCKET, SO_RCVBUF, 1460);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top