2012-08-02 47 views
1

端口爲5792,ip爲123.123.123.123。我能夠將數據發送到IP,像這樣:創建TCP套接字連接並通過XML請求發送以獲得XML響應?

$host = "tcp://123.123.123.123"; 
$port = 5792; 
$errstr = ''; 
$errno = ''; 

$fp = fsockopen($host, $port ,$errno, $errstr, 30); 
if (!$fp) { 
    print 'COULD NOT CONNECT! <br />'; 
    echo "$errstr ($errno)<br />\n"; 
    die(); 
} 
else { 
    print 'SUCCESS!<br />' 
} 

發送似乎也工作:

$message = 'hello'; 
fputs ($fp, $message); 

,問題就來接收數據時:

print fread($fp, 128); 

這打印:

hello 

...到屏幕!換句話說,它迴應了我發送的內容。現在,我知道所有的消息都封裝在一個XML元素中。在這個元素內可以放置一個服務請求,它也被封裝在一個XML元素中。

被封裝的XML元素被稱爲「根」,在這個我可以放置服務請求請求。讓我們調用我正在嘗試完成的實際服務請求「topUp」。

  1. 假設有一個名爲ROOT的root xml元素,它封裝了服務請求「topUp」,那麼將這個XML作爲字符串提交的標準方式是什麼?
  2. 當服務器無法理解您所說的內容時,希望迴應您的請求是否正常?
+1

只有當您告訴您連接的服務器類型時,才能回答這兩個問題。如果它是一個HTTP服務器,你可能想看看'cURL'。如果這是自定義的東西,你告訴我們。 – CodeCaster 2012-08-02 08:37:27

+0

這是自定義的,所以我可以安全地假設唯一能告訴我的人是真正的設計師嗎? – coderama 2012-08-02 08:46:36

+0

我改變了我的問題一點... – coderama 2012-08-02 08:50:50

回答

1

重要的是你知道請求命令的XML結構。在任何情況下,你可以給你以這樣的方式太

$message = "<root>"."\n"; 
$message .= "<request>topUp</request>"."\n"; 
$message .= "</root>"."\n"; 
fputs ($fp, $message); 

命令,但除非你把你的請求結構定義你可能無法得到你想要的結果。

相關問題