Hướng dẫn php socket buffer size - kích thước bộ đệm ổ cắm php

Vì vậy, đây thực sự là một câu hỏi hai phần với phần đầu tiên dẫn đến phần thứ hai.

Tôi đang làm việc trên một dự án máy chủ PHP và tôi hơi bối rối với tất cả các cách khác nhau mà tôi có thể tạo ra một ổ cắm. Tôi đã quản lý để tạo ba ổ cắm mỗi lần sử dụng một phương thức mới. Có ai biết sự khác biệt cơ bản giữa ba phương pháp này nếu có?

Phương pháp 1 sử dụng 'socket_create'

$Socket1 = socket_create[AF_INET, SOCK_STREAM, SOL_TCP]
socket_bind[$Socket1, $LocalIP, $LocalPort]
socket_connect[$Socket1, $DestIP, $DestPort]
//Method 1 Read
socket_read[$Socket1]
//Method 1 Write
socket_write[$Socket1, $WriteMsg, strlen[$WriteMsg]]

Phương pháp 2 sử dụng 'fsockopen'

$Socket2 = fsockopen[$Server, $Port]
//Method 2 Read
fgets[$Socket2]
//Method 2 Write
fputs[$Socket2, $PutMsg, strlen[$PutMsg]]

Phương pháp 3 sử dụng 'stream_socket_client'

$Socket3 = stream_socket_client['tcp://'.$DestIP.':'.$DestPort]
//Method 3 Read
stream_socket_recvfrom[$Socket3, $RecSize]
//Method 3 Write
stream_socket_sendto[$Socket3, $SendMsg]

Mặc dù tôi không hiểu sự khác biệt nhưng tôi đã khám phá cả ba tùy chọn đang tìm cách để kiểm soát kích thước cửa sổ TCP. Tôi đang cố gắng đẩy một gói đến máy khách qua mạng LAN của tôi có tải trọng dữ liệu là 1460 byte và sau khi xem xét một gói thu thập, phần dữ liệu TCP của gói của tôi luôn bị cắt ngắn ở 1448 byte. Bất kỳ ý tưởng?

Cảm ơn trước!

Tôi biết người đàn ông đấu tranh! Nhưng gần đây tôi đã làm việc khá nhiều với Workerman. Nếu bạn chưa vấp phải framework php này thì tốt hơn hết bạn nên kiểm tra điều này!

Vâng, Workerman là một khung công tác PHP hướng sự kiện không đồng bộ để dễ dàng xây dựng các ứng dụng mạng nhanh, có thể mở rộng. [Tôi vừa sao chép và dán nó từ trang web của họ hahahah //www.workerman.net/en/ ]

Cách dễ dàng để giải thích điều này là khi nói đến lập trình web socket, tất cả những gì bạn thực sự cần là có 2 tệp trong máy chủ của bạn hoặc máy chủ cục bộ [bất cứ nơi nào bạn đang làm việc].

  1. server.php [mã nguồn sẽ phản hồi tất cả các yêu cầu của khách hàng] [mã nguồn sẽ phản hồi tất cả các yêu cầu của khách hàng]

  2. client.php / client.html [mã nguồn sẽ thực hiện các nội dung yêu cầu] [mã nguồn sẽ thực hiện các nội dung yêu cầu]

Vì vậy, về cơ bản, bạn phải viết mã trước trên server.php và khởi động máy chủ. Thông thường, vì tôi đang sử dụng các cửa sổ làm tăng thêm nhiều khó khăn, tôi chạy máy chủ thông qua lệnh này -> php server.php startserver.php và khởi động máy chủ. Thông thường, vì tôi đang sử dụng các cửa sổ làm tăng thêm nhiều khó khăn, tôi chạy máy chủ thông qua lệnh này -> php server.php start

Vâng nếu bạn đang sử dụng xampp. Đây là một cách để làm điều đó. Đi đến bất cứ nơi nào bạn muốn để đặt các tệp của mình. Trong trường hợp của chúng tôi, chúng tôi sẽ đưa các tệp vào

C: /xampp/htdocs/websocket/server.php

C: /xampp/htdocs/websocket/client.php hoặc client.html

Giả sử rằng bạn đã có các tệp đó trong máy chủ cục bộ của mình. Mở Git Bash hoặc Dòng lệnh hoặc Thiết bị đầu cuối của bạn hoặc bất kỳ cái nào bạn đang sử dụng và tải xuống các thư viện php tại đây.

//github.com/walkor/Workerman

//github.com/walkor/phpsocket.io

Tôi thường tải xuống thông qua trình soạn nhạc và chỉ tự động tải các tệp đó trong các tập lệnh php của mình.

Và cũng kiểm tra cái này. Điều này thực sự quan trọng ! Bạn cần libary javascript này để client.php hoặc client.html giao tiếp với server.php khi bạn chạy nó.quan trọng ! Bạn cần libary javascript này để client.php hoặc client.html giao tiếp với server.php khi bạn chạy nó.

//github.com/walkor/phpsocket.io/tree/master/examples/chat/public/socket.io-client

Tôi chỉ sao chép và dán thư mục socket.io-client đó ở cùng cấp với server.php và client.php của tôi

Đây là mã nguồn server.phpserver.php

và khách hàng:

var connection = new WebSocket['ws://localhost:12345'];
connection.onopen = function [] {
  connection.send['Ping']; // Send the message 'Ping' to the server
};

// Log errors
connection.onerror = function [error] {
  console.log['WebSocket Error ' + error];
};

// Log messages from the server
connection.onmessage = function [e] {
  console.log['Server: ' + e.data];
};

Nếu có bất cứ điều gì sai trong mã của tôi, bạn có thể giúp tôi sửa nó không? Concole trong firefox nóiFirefox can't establish a connection to the server at ws://localhost:12345/.Concole trong firefox nóiFirefox can't establish a connection to the server at ws://localhost:12345/.

EDIT Vì có nhiều hứng thú với câu hỏi này, tôi quyết định cung cấp cho bạn những gì cuối cùng tôi đã đưa ra. Đây là mã đầy đủ của tôi.
Vì có nhiều hứng thú với câu hỏi này, tôi quyết định cung cấp cho bạn những gì cuối cùng tôi đã đưa ra. Đây là mã đầy đủ của tôi.

68 hữu ích 2 bình luận 131k xem chia sẻ 2 bình luận 131k xem chia sẻ

Bài Viết Liên Quan

Chủ Đề