日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

centos php 开启socket,centos下phpsocket连接,该如何解决

發(fā)布時間:2024/10/12 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos php 开启socket,centos下phpsocket连接,该如何解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

centos下php socket連接

最近要做一個基于tcp/ip下的短連接

我們自己的代碼使用的是php的socket連接,對方服務器,已經測試能夠連接,并接收到對方傳回來的數據;

現在要求我們自己也需要搭建一個socket服務器,要求對方也可以連接我們服務器,獲取相關數據。

以前沒有做個socket連接,剛剛接觸

服務器也已經設置了一個端口好,可以telnet訪問

看網絡很多關于socket的php介紹,一些例子也使用了,服務器端的文件,總是不能被訪問返回數據

有朋友做個這方面的嗎?

幫忙一下

怎么寫服務器端文件,怎么實時監(jiān)聽到該socket端口有socket請求,并返回數據個對方

謝謝了

------解決方案--------------------

是的,端口被打開了就不能復用

所以通訊時需要先打開一個周知的端口,一旦監(jiān)聽到該端口有信息時

就需要打開一個空閑端口,并將該端口通知對方,用于后續(xù)的通訊

服務方的主監(jiān)聽程序需要常駐內存,只能啟動一次

通訊是通過子進程進行的

需要注意的是:php 適合做客戶端,而不適合做服務端

可能以后更高的版本會有所改變,至少在php5.5也還是沒有改變(雖然已經列入開發(fā)計劃)

------解決方案--------------------

如果你需要xml進行通信的話,webservice就是最好的選擇。你可以了解一下webservice,比如soap。你只要開放webservice對方調用就可以,而且對方可以是任何語言或程序。

------解決方案--------------------

樓主要的東西其實就是RPC,我有一個,你可以直接拿去用,

https://github.com/walkor/workerman

開發(fā)文檔在:http://www.workerman.net/documentation

安裝部署開發(fā)都非常方便。

如果有啥不明白,可以隨時聯(lián)系我

------解決方案--------------------

//server.php

set_time_limit(0);

// Set up our socket

$commonProtocol = getprotobyname("tcp");

$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);

socket_bind($socket, '192.168.10.224', 50004);

socket_listen($socket,5);

// Initialize the buffer

$buffer = "";

while(true)

{

$run=file_get_contents("./run.txt");

if($run==0)break;

// Accept any connections coming in on this socket

$connection = socket_accept($socket);

printf("Socket 鏈接中\(zhòng)r\n");

// Check to see if there is anything in the buffer

if($buffer != "")

{

printf("寫入開始 緩沖區(qū)內容發(fā)送..\r\n");

socket_write($connection, $buffer . "\r\n");

printf("寫入結束 \r\n");

}

else

{

printf("緩沖區(qū)無數據\r\n");

}

// Get the input socket_read($connection, 1024)

while($data = socket_read($connection, 4096))

{

if($run==0)break;

$buffer = $data;

//寫入客戶端數據

file_put_contents("./txt.txt", json_encode($data)."\n",FILE_APPEND);

socket_write($connection, "Information Received\r\n");

printf("讀結束 緩沖區(qū)內容: " . $buffer . "\r\n");

}

socket_close($connection);

printf("關閉 socket\r\n\r\n");

}

//命令行里 輸入: php server.php

//client.php 直接瀏覽器訪問

$stime = microtime(true);

$fp = stream_socket_client("tcp://192.168.10.224:50004", $errno, $errstr, 30,STREAM_CLIENT_CONNECT

------解決方案--------------------

STREAM_CLIENT_PERSISTENT);

if (!$fp) {

echo "$errstr ($errno)

\n";

} else {

fwrite($fp,$msg,mb_strlen($msg));

echo fread($fp, 4096)."\n";

fclose($fp);

}

$etime = microtime(true);

echo "Time: " . ($etime - $stime) . "n";

//我目前殺掉占用端口太麻煩,直接用文件控制退出 。run.txt 文件存 0或1 本條技術文章來源于互聯(lián)網,如果無意侵犯您的權益請點擊此處反饋版權投訴 本文系統(tǒng)來源:php中文網

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的centos php 开启socket,centos下phpsocket连接,该如何解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。