【小(xiǎo)編推薦】php socket的(de)使♦✔>₹用(yòng)

2014-06-30   |&∏''★nbsp;  發布者:梁國(guó)芳&nb"↕₽☆sp;  | σ>;  查看(kàn):3320次

php

 php  socket  使用$α(yòng)。。
先弄個(gè)簡單例子(zǐ)

服務端代碼server.php:

error_reporting(E_ALL);
set_time_limit(0);
//ob_implicit_flush();

$address = '127.0.0.1';
$port = 10005;
//創建端口
if( ($sock = socket_create(AF_IN§<<ET, SOCK_STREAM, SOL_TCP)) === falγ✔↓se) {
    echo &quo←₽t;socket_create() failed :∑♠reason:" . socket_st≠""rerror(socket_last_error()) . "≤φ\n";
}

//綁定
if (socket_bind($sock, $address, $ πport) === false) {
    echo "socket_bπ€ind() failed :reason:&↕↓→​quot; . socket_strerror(sσ₽‌ocket_last_error($so≤©ck)) . "\n";© λ
}

//監聽(tīng)
if (socket_listen($sock, 5) ↑♣§=== false) {
    echo "socke₽¶t_bind() failed :reason:" . so§↑πcket_strerror(socket_last_er≥♥"ror($sock)) . "'♦×ε\n";
}

do {
    //得(de)到(dào)一(yī&¶€€)個(gè)鏈接
    i™•↔αf (($msgsock = socket_accept($sock)) == ↕= false) {
     &nbs¶↑p;  echo "socket_accept™δ≥±y() failed :reason:".socket£♣®_strerror(socket_last_error‌ε×($sock)) . "\n";
     &₹ε₩nbsp;  break;
    }
    //welco☆γε₩me  發送到(dào)客戶端
    $msg = & • quot;server send:welcome
";
    socket_write($ms¶ε gsock, $msg, strlen($msg));
    echo 'rΩ≠ ead client message\n';
    $bufε✔‍& = socket_read($msgsock, 8192);
    $talkback≈★γ = "received message:$buf\n";γπ
    echo $tal∞±kback;
    if (false =♦←↑∑== socket_write($msgsock, $talkback,≠' ∞ strlen($talkback))) {
     &nbsπ€★p;  echo "soc§§ket_write() failed reason±π☆:" . socket_strerror(socket_las&γ♠t_error($sock)) ."\n";
    } else {φε​
       ♠×¶ echo 'send success';
    }
    sockπ'et_close($msgsock);
} while(true);
//關閉socket
socket_close($sock);


?>

 

客戶端代碼  client.php:

 

//error_reporting(E_ALL);
echo "

tcp/ip connection

\n";
$service_port = 10005;
$address = '127.0.0.1';

$socket = socket_create(AF_IN$δET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket"‍_create() failed: reason: " . ↕♦σsocket_strerror(socket_last_error())↔® . "\n";
} else {
    echo "OK. \n&q∏↑‌uot;;
}

echo "Attempting to πλconnect to '$address' on port '$service↔©€±_port'...";
$result = socket_connect($socket, $addr♣&ess, $service_port);
if($result === false) {
    echo "socket₹ε↕_connect() failed.\nReason: ($result) ≥ " . socket_strerror(socket_last_eλγ®rror($socket)) . "∏λ♥\n";
} else {
    echo &qu$β≈σot;OK \n";
}
$in = "HEAD / http/1.1\r\☆→♥n";
$in .= "HOST: localhost \r\n"÷∏¶↓;;
$in .= "Connection: close\r\n\™$r\n";
$out = "";
echo "sending http head r↔•<equest ...";
socket_write($socket, $in, strle↕'"n($in));
echo  "OK\n&₩↕quot;;

echo "Reading response:\n\nδ‍";
while ($out = socket_read($socket π, 8192)) {
    echo $out;
}
echo "closeing socket..&quo₽★t;;
socket_close($socket);
echo "ok .\n\n";
?>

 

/*     ==========¥₩=以下(xià)為(wèi)要(yào)點===₩₩"÷==========  **/

 1.首先要(yào)在php.ini 中開(kāi)啓 php_so™φ>cket.dll  

2.server.php   需要(yà ↑☆σo)在   cli模↑‍←α式下(xià)運行(xíng)  (win的(de)&♠γ<₽nbsp; cmd 窗(chuāng)口下(xià)  ✔β;    《需要(yào)配置環境變量才可¥Ω≥★(kě)以 使用(yòng)  php &nb'×sp; "D:\Program Fil€×es\PHPnow\htdocs\server.php"₽∏•    》)  當有(yǒu)用(yòng)戶™×ε 在  在浏覽器(qì)運行(xíng)δ®₽•  client.php時(shí)&π¶÷‌nbsp;  cmd下(xià)™ 的(de)  server.php 會(h¶÷uì)輸出相(xiàng)應的(de)信息。

環境變量設置 參見(jiàn)  show-372.html

3.在php .ini  中&n&‍✔bsp;    extension_dir&n↕‌∑→bsp;      ♠•  改成 "ext" &n<​bsp;   《win下(xià)&nb  sp; php.ini   放(>δfàng)在 c:\windows  下(xi‌$↕γà)。<如(rú)果windows下(xià)←₽✘€沒有(yǒu) php.ini  需要(yào)複制(zhì)一≠•β÷(yī)個(gè)過去(qù)。>》

4.如(rú)果出現(xiàn)&nbs¶∞p;Failed loading ..\..\ZendOptimizer\‍♦ ZendExtensionManager.dll 

 

php.ini底部加了(le)段加載他(tā)的(de)DLL代碼φ ≤δ,去(qù)掉就(jiù)行(xíng)☆∞了(le)

在PHP.ini中搜索zend,然後都(dōu)注 ₹↕釋掉

[Zend]

#;zend_extension_ts = &quo≈✘t;\xampp\php\zendOptimizer≈​\lib\ZendExtensionManager.dΩ₩γll"

#;zend_extension_manager.optimizer_tδ★s = "\xampp\php¥β•×\zendOptimizer\lib\Optimizer&q•&∏uot;

。。。