1.在socket_bind的時(shí)候ip地址不能真回環(huán)地址如127.0.0.1
蘭西網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
2.server.php后臺(tái)跑起來(lái)的時(shí)候nohup php server.php /var/tmp/a.log 21
一: udp 方式
1) server.php
?php //error_reporting( E_ALL ); set_time_limit( 0 ); ob_implicit_flush(); $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); if ( $socket === false ) { echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n"; } $ok = socket_bind( $socket, '202.85.218.133', 11109 ); if ( $ok === false ) { echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) ); } while ( true ) { $from = ""; $port = 0; socket_recvfrom( $socket, $buf,1024, 0, $from, $port ); echo $buf; usleep( 1000 ); } ?
2) client.php
?php $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); $msg = 'hello'; $len = strlen($msg); socket_sendto($sock, $msg, $len, 0, '202.85.218.133', 11109); socket_close($sock); ?
二: TCP 方式
1)server.php
?php //error_reporting( E_ALL ); set_time_limit( 0 ); ob_implicit_flush(); $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); socket_bind( $socket, '192.168.2.143', 11109 ); socket_listen($socket); $acpt=socket_accept($socket); echo "Acpt!\n"; while ( $acpt ) { $words=fgets(STDIN); socket_write($acpt,$words); $hear=socket_read($acpt,1024); echo $hear; if("bye\r\n"==$hear){ socket_shutdown($acpt); break; } usleep( 1000 ); } socket_close($socket) ?
2) client.php
?php $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $con=socket_connect($socket,'192.168.2.143',11109); if(!$con){socket_close($socket);exit;} echo "Link\n"; while($con){ $hear=socket_read($socket,1024); echo $hear; $words=fgets(STDIN); socket_write($socket,$words); if($words=="bye\r\n"){break;} } socket_shutdown($socket); socket_close($sock); ?
與設(shè)備發(fā)送數(shù)據(jù)的程序編寫(xiě)人協(xié)調(diào),在發(fā)送的數(shù)據(jù)前面添加一個(gè)標(biāo)識(shí)設(shè)備ID的內(nèi)容,這樣接收數(shù)據(jù)后從數(shù)據(jù)判斷設(shè)備號(hào),而不是通過(guò)IP和PORT。
例如約定用兩位數(shù)表示設(shè)備ID,那么設(shè)備01發(fā)送的數(shù)據(jù)是AAAAA修改為發(fā)送01AAAAA,收到數(shù)據(jù)后識(shí)別01為設(shè)備號(hào),后面的AAAAA作為數(shù)據(jù)。
例子代碼:
?php
$sock?=?socket_create(AF_INET,?SOCK_DGRAM,?SOL_UDP);
$msg?=?"Ping?!";
$len?=?strlen($msg);
socket_sendto($sock,?$msg,?$len,?0,?'127.0.0.1',?1223);
socket_close($sock);
?
查看手冊(cè)中相關(guān)的函數(shù)就知道進(jìn)一步應(yīng)該怎么編程。