Sockets 到服务器的udp连接
我得到了一个模板($request),通过udp端口发送到服务器 我将$request编译为: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 = '<?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)中循环…我以前没有意识到。我如何调试更多?我没有任何方法在服务器上调试。我通过打破循环解决了它。