2017-11-27 6 views
0

TCP/IP(ソケット)接続でサーバーにXMLを送信しようとしています。ソケットへのXMLリクエストの送信

私の接続は大丈夫です。送信部が問題です。

以下を参照してください。

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$host = "xx.xxx.xx.xxx"; 
$port = xxxx; 

// create socket 
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); 

// connect to server 
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 
if($result === true){ 
    echo 'connected'; 
} 

$sendVendRequest=' 
<ipayMsg client="SAFEPAY" term="00001" seqNum="0" time=" '.date('Y-m-d H: i: s').' +0200"> 
    <elecMsg ver="2.44"> 
     <vendReq> 
      <ref>319155500001</ref> 
      <amt cur="KSh">1000</amt> 
      <numTokens>1</numTokens> 
      <meter>A12C3456789</meter> 
      <payType>cash</payType> 
     </vendReq > 
    </elecMsg> 
</ipayMsg>'; 


$vendRequestXml=simplexml_load_string($sendVendRequest) or die("Error: could not create an object"); 
// print_r($vendRequestXml); 
socket_write($socket, $sendVendRequest, strlen($sendVendRequest)) or die("Could not send data to server\n"); 

送信側が失敗します。タイムアウトするまでロードされます。私は間違ってリクエストを送信していると思う..誰かがこれを達成する方法について私に指示してください。

+0

あなたはtcpソケット接続を作成しましたか? – Deep

+0

@DeepKakkar socket_createは大丈夫です...とてもうまく接続します。あなたの質問を理解できない限り、まあ、 – user6721269

+0

https://stackoverflow.com/questions/11773769/creating-a-tcp-socket-connection-and-sending-through-a-xml-request-in-order-to -g – Deep

答えて

0

このコードは、私の作品:

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$host = "example.com"; 
$port = 80; 

// create socket 
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); 

// connect to server 
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 
if($result === true){ 
    echo 'connected'; 
}· 

$st=' 
<ipayMsg client="SAFEPAY" term="00001" seqNum="0" time=" '.date('Y-m-d H: i: s').' +0200"> 
    <elecMsg ver="2.44"> 
     <vendReq> 
      <ref>319155500001</ref> 
      <amt cur="KSh">1000</amt> 
      <numTokens>1</numTokens> 
      <meter>A12C3456789</meter> 
      <payType>cash</payType> 
     </vendReq > 
    </elecMsg> 
</ipayMsg>'; 


$length = strlen($st); 

while(true) { 
    $sent = socket_write($socket, $st, $length); 

    if($sent === false) { 
    break; 
    } 

    // Was the entire msg sent? 
    if($sent < $length) { 
    // If not, handle the leftover data. 
    $st = substr($st, $sent); 
    $length -= $sent; 
    } else { 
    break; 
    } 
} 

echo socket_read($socket, 8192); 

あなたはそのポートにTELENETことはできますか?

関連する問題