首頁 後端開發 php教程 使用socket系列函數實現連接TCP服務

使用socket系列函數實現連接TCP服務

Jan 31, 2020 pm 05:24 PM
socket tcp 連接

使用socket系列函數實現連接TCP服務

首先需要先有一個tcp 服務,我們使用php中的socket 系列函數實作

<?php

//创建socket套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//设置阻塞模式
socket_set_block($socket);
//为套接字绑定ip和端口
socket_bind($socket,&#39;127.0.0.1&#39;,3046);
//监听socket
socket_listen($socket,4);

while(true)
{
    //接收客户端请求
    if(($msgsocket = socket_accept($socket)) !== false)
    {
        //读取请求内容
        $buf = socket_read($msgsocket, 8192);
        echo "Received msg: $buf \n";
        $str = "this is a service message";
        //向连接的客户端发送数据 
        socket_write($msgsocket, $str,strlen($str));
        //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成
        socket_close($msgsocket);
    }
}
登入後複製

連接tcp 服務:

#使用socket 系列函數連接

<?php
$st="socket send message";
$length = strlen($st);
//创建tcp套接字
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
//连接tcp
socket_connect($socket, &#39;127.0.0.1&#39;,3046);
//向打开的套集字写入数据(发送数据)
$s = socket_write($socket, $st, $length);
//从套接字中获取服务器发送来的数据
$msg = socket_read($socket,8190);

echo $msg;
//关闭连接
socket_close($socket);
登入後複製

使用socket系列函數實現連接TCP服務使用fsockopen 連線

<?php
//使用 fsockopen 打开tcp连接句柄
$fp = fsockopen("tcp://127.0.0.1",3046);
$msg = "fsockopen send message";
//向句柄中写入数据
fwrite($fp,$msg);
$ret = "";
//循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
while (!feof($fp)){
    stream_set_timeout($fp, 2);
    $ret .= fgets($fp, 128);
}
//关闭句柄
fclose($fp);
echo $ret;
登入後複製

 使用socket系列函數實現連接TCP服務#使用stream_socket_client連接

<?php
//使用 stream_socket_client 打开 tcp 连接
$fp = stream_socket_client("tcp://127.0.0.1:3046");
$msg = "fsockopen send message";
//向句柄中写入数据
fwrite($fp,$msg);
$ret = "";
//循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
while (!feof($fp)){
    stream_set_timeout($fp, 2);
    $ret .= fgets($fp, 128);
}
//关闭句柄
fclose($fp);
echo $ret;
登入後複製

使用socket系列函數實現連接TCP服務

相關文章教學推薦:php教學

以上是使用socket系列函數實現連接TCP服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Win11遊戲手把連線完整指南 Win11遊戲手把連線完整指南 Jan 02, 2024 pm 05:26 PM

更新了最新的win11系統之後有不少的用戶不清楚該怎麼連接手柄進行遊戲,為此我們今天專給你們帶來了win11連接手柄詳細教程,如果你還沒有完成連接就來看看怎麼操作吧。 win11怎麼連接手把:1、點選下方的開始然後進入windows設定開啟「控制台」。 2.進入之後就可以找到「檢視裝置和印表機」進行進入。 3.此時你能夠看到手把設備的訊息,進行連接就行了。 4.連接成功之後出現一個√,就可以完成連接了。

win7印表機無法連線的錯誤代碼0x0000011b win7印表機無法連線的錯誤代碼0x0000011b Dec 26, 2023 pm 10:01 PM

很多時候我們都需要用電腦來連接印表機進行各種列印的操作,但有時候有些使用者會遇到win7無法連接印表機0x0000011b這種問題狀況,以下就是具體的因應解決方法。 win7無法連接印表機0x0000011b1、快捷鍵“win+r”,輸入“regedit”2、找到以下路徑“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且Set\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且數值設定為0。將新建專案命名為“RpcAuthnLevelPri

keep體脂秤怎麼連接 keep體脂秤怎麼連接 Mar 07, 2024 pm 04:50 PM

keep體脂秤怎麼連接?keep是有專門設計的體脂秤,但是多數的用戶不知道如何連接keep的體脂秤,接下來就是小編為用戶帶來的keep體脂秤連接方法圖文教程,有興趣的用戶快來一起看看吧! keep體脂秤怎麼連接1、先打開keep軟體,進入到主頁點選右下角【我的】選擇其中的【智慧硬體】;2、然後在我的智慧型裝置頁面,中間【新增裝置】按鈕;3 、之後在選擇你要加入的設備介面,選擇【智慧體脂/體重計】;4、接著在選擇設備型號頁面,點選【keep體脂秤】選項;5、最後在下圖所示的介面,最底部的【立即添加】

修復Edge你的連線不是專用連線的三種方法 修復Edge你的連線不是專用連線的三種方法 Mar 13, 2024 pm 01:30 PM

  大家在使用Edge瀏覽器訪問網頁的時候,有遇到提示你的連接不是專用連接,導致網頁瀏覽失敗的情況嗎?這是怎麼回事?很多朋友遇到這種問題都不知道該如何處理,可以看看下面三個解決方法。  方法一(簡單粗暴):在edge瀏覽器中,您可以透過進入設定並關閉安全性功能,然後在網站權限中阻止位置權限來嘗試解決原先報錯的網站無法存取的問題。需要注意的是,這種方法的有效性和持續時間可能會有所不同,無法確定特定的效果。重新啟動瀏覽器後,您可以嘗試造訪網站,看看是否有問題解決。  方法二:  調整鍵盤為英文輸

win10如何重置tcp/ip協定? windows10重置tcp/ip協定棧的方法 win10如何重置tcp/ip協定? windows10重置tcp/ip協定棧的方法 Mar 16, 2024 am 11:07 AM

win10如何重置tcp/ip協定?其實方法很簡單的,使用者可以直接的進入到命令提示符,然後按下ctrl shift enter的組合鍵來進行操作就可以了或者是直接的執行重置命令來進行設置,下面就讓本站來為使用者來仔細的介紹一下windows10重置tcp/ip協定棧的方法吧。 windows10重置tcp/ip協定棧的方法一、管理員權限1、我們使用快捷鍵win R直接開啟運行窗口,然後輸入cmd並按住ctrl shift enter的組合鍵。 2、或者我們可以直接在開始選單中搜尋命令提示符,右鍵點

解決Windows 10網路連線受限的方法 解決Windows 10網路連線受限的方法 Feb 19, 2024 pm 09:20 PM

Win10連接網路受限解決方案隨著科技的快速發展,網路成為了人們生活中不可或缺的一部分。然而,有時我們在使用Windows10作業系統的電腦連接網路時可能會遇到一些問題,其中之一就是連接受限制。在這種情況下,我們無法正常存取網頁、下載檔案或使用網路功能。那麼,有什麼辦法能夠解決這個問題呢?本文將為您介紹幾種常見的解決方案。一、檢查網路連線設定首先,我

印表機錯誤代碼0x0000011b的含義 印表機錯誤代碼0x0000011b的含義 Feb 18, 2024 pm 10:02 PM

連接印表機0x0000011b是什麼意思在使用電腦、筆記型電腦或其他裝置時,使用者常常會遇到各種錯誤代碼。其中,0x0000011b是一種常見的印表機連線錯誤代碼。那麼,連接印表機0x0000011b到底是什麼意思呢?首先,我們需要了解一下印表機連接的基本原理。當我們需要從電腦列印文件時,通常需要將印表機連接到電腦上,以便二者之間進行資料傳輸。這種連接可以透過

共用印表機無法連接到印表機 共用印表機無法連接到印表機 Feb 22, 2024 pm 01:09 PM

隨著數位時代的發展,共享印表機成為現代辦公環境中不可或缺的一部分。然而,有時我們可能會遇到共用印表機無法連接到印表機的問題,這不僅會影響工作效率,還會帶來一系列麻煩。本文旨在探討共用印表機無法連接到印表機的原因和解決方法。共用印表機無法連接到印表機的原因有很多,其中最常見的原因是網路問題。如果共用印表機與印表機之間的網路連線不穩定或中斷,那麼就無法進行正常

See all articles