Как я могу отправить данные с PHP к IP-адресу через UDP?

Я предполагаю, что cs50.h содержит некоторые определения, такие как псевдоним типа от char * до string , которые профессор дает вам для простоты.

Если это правда, то buildLetterDictionary() не может работать, потому что вы делаете:

char letters[27];
...
char * letter = letters;
return letter;

Это означает, что вы возвращаете адрес локальной переменной, которая будет уничтожена, как только вы выйдете функция.

5
задан Rex M 26 March 2009 в 23:49
поделиться

3 ответа

Просто вытащенный этот отрывок из некоторого рабочего кода я имею



if (!socket_bind($sh, LISTENIP, LISTENPORT)) exit("Could not bind to socket");

while (TRUE) {
    // $z = socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort);
    while(socket_recvfrom($sh, $data, 65535, 0, $connectip, $connectPort)) {
        $pid = pcntl_fork();
        if ($pid == -1) {
            die('could not fork');
        } else { #START ELSE COULD FORK
            $PIDS[$pid] = $pid; //KEEP TRACK OF SPAWNED PIDS
            if ($pid) {
                //PARENT THREAD : $ch is a copy that we don't need in this thread
            } else {
                /** CHILD THREAD::BEGIN PROCESSING THE CONNECTION HERE!    **/
                include "include/child_thread.inc.php";
            } //Child Thread
        }//if-else-forked

        /** CLEANUP THE CHILD PIDs HERE :: "Any system resources used by the child are freed." **/
        foreach ($PIDS as $pid) pcntl_waitpid($pid,$status,WNOHANG);

        $i++; //INCREASE CONNECTION COUNTER
    }//While socket_accept


    /** CLEANUP THE PARENT PIDS **/
    foreach ($PIDS as $pid) {
        $returnPid = pcntl_waitpid($pid,$status);
        unset($PIDS[$pid]);
    }
}//While True

1
ответ дан 14 December 2019 в 04:48
поделиться

Мое знание PHP немного ржаво, таким образом, я делал некоторый поиск, пытающийся найти некоторые хорошие руководства и учебные руководства. Эти Сокеты PHP Сделанный Easylooks как он будут хорошим руководством начинающего для Вас.

Править: Исходная статья, которую я отправил, не вдавалась в большие подробности для UDP, таким образом, я устранил предыдущий код. Статья из Руководства PHP имеет еще некоторую информацию конкретно относительно UDP:

<?php
$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}

do {
    $pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
    echo "$peer\n";
    stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while ($pkt !== false);

?>

Редактирование № 2: Вот другое полезное учебное руководство для программирования сокета в PHP. Это - главным образом TCP, но это действительно включает раздел по тому, как изменить код для использования UDP вместо этого.

7
ответ дан 14 December 2019 в 04:48
поделиться

Я думаю, что Вы найдете, что ссылка сокета PHP является хорошим местом для изучения по этой теме.

0
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: