2009-02-18 26 views
13

Dịch vụ lưu trữ mà tôi sử dụng hiện tại không cho phép tôi sử dụng ổ cắm, có lẽ vì lý do chính đáng. Tuy nhiên, họ cho phép tôi sử dụng fsockopen. Tôi đã tự hỏi sự khác biệt là gì, bởi vì một số tập lệnh hoạt động với socket_create và thậm chí stream_socket_server, không hoạt động với fsockopen. Điều đó nói rằng, nếu fsockopen sẽ hoạt động, mã của tôi được liệt kê bên dưới. Những gì nó làm là nó lắng nghe trên địa chỉ IP của riêng mình cho các gói tin udp đến và đọc chúng.socket_create vs. fsockopen php

Cảm ơn

$sock = fsockopen("udp://x.x.x.x", $port); 
while(1) 
{ 
    $buf = fread($sock, 200); 
    flush(); 
    ob_flush(); 
} 

Trả lời

11

fsockopen tạo ra một kết nối đến một máy chủ, không phải là một ổ cắm nghe.

fsockopen ($ địa chỉ) ~ == socket_connect (socket_create(), $ địa chỉ)

nhà cung cấp hosting của bạn không muốn bạn lắng nghe trên cổng thay thế/giao thức.

Nếu những gì bạn đã làm việc, tôi sẽ không tin vào nó luôn luôn làm việc vì nó sẽ là một lỗi.

+0

cảm ơn "fsockopen == socket_connect (socket_create(), $ address)" chính xác là những gì tôi đang tìm kiếm. có vẻ như tôi cần phải tìm một máy chủ mới: P – Samuel

+0

nơi tôi có thể nhận được thông tin chi tiết hơn cho bạn câu trả lời. không có một chương trình nghe trên cổng 80? không phải là một chương trình nghe trên 80 một ổ cắm nghe? –

+0

@JayapalChandran những gì Samuel muốn làm là viết chương trình nghe trên cổng 80, không kết nối với nó. Anh ta muốn chấp nhận các kết nối (một sự đơn giản hóa, vì UDP là không trạng thái). Đây có thể là một khởi đầu tốt nếu bạn muốn tìm hiểu thêm: http://en.wikipedia.org/wiki/Network_socket –