Sockets 到服务器的udp连接

Sockets 到服务器的udp连接,sockets,templates,connection,udp,Sockets,Templates,Connection,Udp,我得到了一个模板($request),通过udp端口发送到服务器 我将$request编译为: $request = '<?xml version="1.0" encoding="utf-8"?> <srv version="1.0" msg_type="request"> <header> <param name="SN" value="' . ++$SN . '" />

我得到了一个模板($request),通过udp端口发送到服务器

我将$request编译为:

$request = '<?xml version="1.0" encoding="utf-8"?>
    <srv version="1.0" msg_type="request">
        <header>
            <param name="SN" value="'       . ++$SN . '" />
            <param name="User" value="'     . $api_user . '" />
            <param name="Cmd" value="'      . $Cmd . '" />
        </header>
     <MyCmd>
     </MyCmd>
</srv>';
$request=
';
然后,我尝试通过以下方式与服务器通信:

if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Couldn't create socket: [$errorcode] $errormsg \n");
}

echo "Socket created \n<br />";

//Communication loop
while(1)
{

    if( ! socket_sendto($sock, $input , strlen($request) , 0 , $server , $port))
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

        die("Could not send data: [$errorcode] $errormsg \n");
    }

    //Now receive reply from server and print it
    if(socket_recv ( $sock , $reply , 2045 , MSG_WAITALL ) === FALSE)
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

        die("Could not receive data: [$errorcode] $errormsg \n");
    }

    echo "Reply : $reply";
}
if(!($sock=socket\u create(AF\u INET,sock\u DGRAM,0)))
{
$errorcode=socket\u last\u error();
$errormsg=socket\u strerror($errorcode);
die(“无法创建套接字:[$errorcode]$errormsg\n”);
}
回显“已创建套接字\n
”; //通信回路 而(1) { 如果(!socket_sendto($sock,$input,strlen($request),0,$server,$port)) { $errorcode=socket\u last\u error(); $errormsg=socket\u strerror($errorcode); die(“无法发送数据:[$errorcode]$errormsg\n”); } //现在从服务器接收回复并打印它 if(socket_recv($sock,$reply,2045,MSG_WAITALL)==FALSE) { $errorcode=socket\u last\u error(); $errormsg=socket\u strerror($errorcode); die(“无法接收数据:[$errorcode]$errormsg\n”); } 回音“回复:$Reply”; }
我得到:

创建套接字 无法发送数据:[0]成功


我做错了什么?

您在哪里设置了
$input
变量?没有“UDP连接”之类的东西。$input应该是$request-谢谢!但并没有改变结果。似乎我没有得到$requestIt的长度,它似乎在if(socket_recv)中循环…我以前没有意识到。我如何调试更多?我没有任何方法在服务器上调试。我通过打破循环解决了它。