cuốn sách gpt4 ai đã làm

php - Nhận tất cả các tiêu đề từ URL khi kết nối bằng cổng

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 04:08:09 27 4
mua khóa gpt4 Nike

Tôi đang bận viết tập lệnh theo dõi để xử lý kết nối và đọc thông tin từ đơn vị theo dõi. Nhưng cách nhà sản xuất giải thích cho tôi là thiết bị sẽ gửi một cái gì đó giống như URL và kết nối với cổng TCP, ví dụ: 7203.

Bây giờ câu hỏi của tôi là: Làm cách nào để có được tiêu đề của thiết bị được kết nối với máy chủ của tôi khi sử dụng cổng? Tôi cũng chạy mã từ dòng lệnh Linux.

Dưới đây là mã tôi sử dụng để mở cổng:

#!/usr/bin/php -q
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);
ob_implicit_flush();
$ip = 'IP máy chủ của tôi';
cổng $ = '7203';
$__server_listening = đúng;

khai báo(tick = 1);

trở thành_daemon();

/* không ai/nogroup, thay đổi uid/gid của máy chủ của bạn đối với người dùng không có quyền riêng tư

** Nhận xét của Andrew - Tôi không thể làm việc này được, tôi đã nhận xét nó
mã vẫn hoạt động tốt nhưng mã của tôi không chạy với tư cách người dùng riêng tư....
không ghi chú cho đầy đủ
*/
Change_identity(99, 99);

/*xử lý tín hiệu*/
pcntl_signal(SIGTERM, 'sig_handler');
pcntl_signal(SIGINT, 'sig_handler');
pcntl_signal(SIGCHLD, 'sig_handler');

/* thay đổi điều này thành máy chủ/cổng của riêng bạn */
server_loop($ip, $port);

/**
* Thay đổi danh tính thành người dùng không có quyền riêng tư
*/
hàm thay đổi danh tính( $uid, $gid)
{
if( !posix_setgid( $gid ) )
{
print "Không thể đặtgid thành " . $gid "!\n";
ra;
}

if( !posix_setuid( $uid ) )
{
print "Không thể thiết lập thành " .
ra;
}
}

/**
* Tạo ổ cắm máy chủ và lắng nghe các kết nối máy khách đến
* @param string $address Địa chỉ để nghe
* @param int $port Cổng để nghe
*/
chức năng server_loop($địa chỉ,$port)
{
TOÀN CẦU $__server_listening;

if(($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0)
{
echo "không tạo được socket: ".socket_strerror($sock)."\n";
ra();
}

if(($ret = socket_bind($sock, $address, $port)) < 0)
{
echo "không liên kết được socket: ".socket_strerror($ret)."\n";
ra();
}

if( ( $ret = socket_listen( $sock, 0 ) ) < 0 )
{
echo "không nghe được socket: ".socket_strerror($ret)."\n";
ra();
}

socket_set_nonblock($sock);

echo "đang chờ khách hàng kết nối trên $address:$port\n";

trong khi ($__server_listening)
{
$connection = @socket_accept($sock);
nếu ($ kết nối === sai)
{
usleep(100);
}
elseif ($kết nối > 0)
{
hand_client($sock, $connect);
}
khác
{
echo "lỗi: ".socket_strerror($connection);
chết;
}
}
}

/**
*Bộ xử lý tín hiệu
*/
hàm sig_handler($sig)
{
chuyển đổi($sig)
{
trường hợp SIGTERM:
trường hợp SIGINT:
//ra();
phá vỡ;

trường hợp SIGCHLD:
pcntl_waitpid(-1, $status);
phá vỡ;
}
}

/**
* Xử lý kết nối máy khách mới
*/
hàm xử lý_client($ssock, $csock)
{
TOÀN CẦU $__server_listening;

$pid = pcntl_fork();

nếu ($pid == -1)
{
/* ngã ba không thành công */
echo "lỗi ngã ba!\n";
chết;
}
nếu không ($pid == 0)
{
/*tiến trình con */
$__server_listening = sai;
socket_getpeername($csock, $remip, $remport);
print date("dmy H:i:s") . " Kết nối từ $remip:$remport\r\n\r\n";
socket_close($ssock);
tương tác ($ csock);
socket_close ($ csock);
print date("dmy H:i:s") . " Kết nối với $remip:$remport đã đóng\r\n\r\n";
in "------------------------------------------------ -------------------------------------------------- ----------------------------------------\r\n\r\n";
}
khác
{
socket_close ($ csock);
}
}

chức năng tương tác($socket)
{
$get = $_REQUEST;
in $ được;
}

/**
* Trở thành một daemon bằng cách rẽ nhánh và đóng cha mẹ
*/
hàm trở thành_daemon()
{
$pid = pcntl_fork();

nếu ($pid == -1)
{
/* ngã ba không thành công */
echo "lỗi ngã ba!\n";
ra();
}
elseif($pid)
{
/*đóng cha mẹ */
ra();
}
khác
{
/* đứa trẻ trở thành nhân tinh của chúng ta */
posix_setsid();
//chdir('/');
//umask(0);
trả về posix_getpid();

}
}

?>

chức năngtương tácVị trí là nơi kết nối đã được thiết lập và tôi có thể đọc được tiêu đề. Nhưng không có niềm vui. Lỗi tôi nhận được là:LƯU Ý: Chuyển đổi mảng thành chuỗi trong /home/armand/bin/7203/7203.php trên dòng 198

Thông tin do đơn vị gửi đến có dạng như sau:

357671030507047#V500#0000#AUTOLOW#1#00ab46cb,0,0,0,2,09,14,$GPRMC, 073106.000,A,2647.0278,S,02750.8628,E,0,00,324.27,021213,,,A*7C##`

câu trả lời hay nhất

Bạn có thể sử dụngmáy chủ http tích hợp trong PHPSử dụng lệnh này

php -S localhost:7203

Hoặc nếu bạn sử dụng máy chủ http của Apache, trong tệp cấu hình, hãy sử dụng

Nghe *:7203

Về php - nhận tất cả các tiêu đề từ URL khi kết nối bằng cổng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/20323744/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress