TCP協(xié)議頭最少20個字節(jié),包括以下的區(qū)域

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、烏當網(wǎng)站維護、網(wǎng)站推廣。
TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是
標示報問的返回地址。
TCP目的端口(Destination port):16位的目的端口域定義傳輸?shù)哪康摹_@個端口指明報文接收計算
機上的應(yīng)用程序地址接口。
TCP序列號(序列碼,Sequence Number):32位
TCP應(yīng)答號(Acknowledgment Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設(shè)置了ACK控制位,這個值表示一個準備接收的包的序列碼。
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, 'websocket.mtgox.com',443);
$upgrade = "GET /mtgox?Channel=tickerCurrency=USDIdKey= HTTP/1.1\r\n".
"Connection: Upgrade\r\n".
"Host: websocket.mtgox.com\r\n".
"Origin: null\r\n".
"Sec-WebSocket-Extensions: x-webkit-deflate-frame\r\n".
//"Sec-WebSocket-Key: NE5EHWd3YsT6AiOAoMWAuQ==\r\n".
"Sec-WebSocket-Version: 13\r\n".
"Upgrade: websocket\r\n".
$length = strlen($upgrade);
socket_write($sock, $upgrade, $length);
8192表示每次最多讀取8192個字節(jié)的數(shù)據(jù)。
代碼的思路是沒問題的,細節(jié)的話沒有測試,不過你將服務(wù)端和客戶端都放在一個頁面里,不太合適。
至少你應(yīng)該編寫兩個頁面分別來跑 socket_create 和 socket_connect
//創(chuàng)建socket監(jiān)聽端口
$socket = socket_create_listen("55555");
//連接失敗給出錯誤信息
if(!$socket){
exit("Failed to create socket!\n");
}
while(true){
$client = socket_accept($socket); //接受一個Socket連接!
1.參考資料
socket_create()函數(shù)需要三個參數(shù):一個協(xié)議、一個socket類型、一個公共協(xié)議。socket_create()函數(shù)運行成功返回一個
包含socket的資源類型,如果沒有成功則返回false。
Socket函數(shù)
函數(shù)名????? 描述
函數(shù)名 描述
socket_accept() 接受一個Socket連接
socket_bind() 把socket綁定在一個IP地址和端口上
socket_clear_error() 清除socket的錯誤或最后的錯誤代碼
socket_close() 關(guān)閉一個socket資源
socket_connect() 開始一個socket連接
socket_create_listen() 在指定端口打開一個socket監(jiān)聽
socket_create_pair() 產(chǎn)生一對沒有差別的socket到一個數(shù)組里
socket_create() 產(chǎn)生一個socket,相當于產(chǎn)生一個socket的數(shù)據(jù)結(jié)構(gòu)
socket_get_option() 獲取socket選項
socket_getpeername() 獲取遠程類似主機的ip地址
socket_getsockname() 獲取本地socket的ip地址
socket_iovec_add() 添加一個新的向量到一個分散/聚合的數(shù)組
socket_iovec_alloc() 這個函數(shù)創(chuàng)建一個能夠發(fā)送接收讀寫的iovec數(shù)據(jù)結(jié)構(gòu)
socket_iovec_delete() 刪除一個已分配的iovec
socket_iovec_fetch() 返回指定的iovec資源的數(shù)據(jù)
socket_iovec_free() 釋放一個iovec資源
socket_iovec_set() 設(shè)置iovec的數(shù)據(jù)新值
socket_last_error() 獲取當前socket的最后錯誤代碼
socket_listen() 監(jiān)聽由指定socket的所有連接
socket_read() 讀取指定長度的數(shù)據(jù)
socket_readv() 讀取從分散/聚合數(shù)組過來的數(shù)據(jù)
socket_recv() 從socket里結(jié)束數(shù)據(jù)到緩存
socket_recvfrom() 接受數(shù)據(jù)從指定的socket,如果沒有指定則默認當前socket
socket_recvmsg() 從iovec里接受消息
socket_select() 多路選擇
socket_send() 這個函數(shù)發(fā)送數(shù)據(jù)到已連接的socket
socket_sendmsg() 發(fā)送消息到socket
socket_sendto() 發(fā)送消息到指定地址的socket
socket_set_block() 在socket里設(shè)置為塊模式
socket_set_nonblock() socket里設(shè)置為非塊模式
socket_set_option() 設(shè)置socket選項
socket_shutdown() 這個函數(shù)允許你關(guān)閉讀、寫、或指定的socket
socket_strerror() 返回指定錯誤號的周詳錯誤
socket_write() 寫數(shù)據(jù)到socket緩存
socket_writev() 寫數(shù)據(jù)到分散/聚合數(shù)組
2.代碼:
?php
$sendStr?=?'30?32?30?34?03?30?33';??//?16進制數(shù)據(jù)
$sendStrArray?=?str_split(str_replace('?',?'',?$sendStr),?2);??//?將16進制數(shù)據(jù)轉(zhuǎn)換成兩個一組的數(shù)組
$socket?=?socket_create(AF_INET,?SOCK_STREAM,?getprotobyname("tcp"));??//?創(chuàng)建Socket
if?(socket_connect($socket,?"192.168.1.100",?8080))?{??//連接
for?($j?=?0;?$j??count($sendStrArray);?$j++)?{
socket_write($socket,?chr(hexdec($sendStrArray[$j])));??//?逐組數(shù)據(jù)發(fā)送
}
$receiveStr?=?"";
$receiveStr?=?socket_read($socket,?1024,?PHP_BINARY_READ);??//?采用2進制方式接收數(shù)據(jù)
$receiveStrHex?=?bin2hex($receiveStr);??//?將2進制數(shù)據(jù)轉(zhuǎn)換成16進制
echo?"client:"?.?$receiveStrHex;
}
socket_close($socket);??//?關(guān)閉Socket
?
網(wǎng)站題目:phptcp獲取數(shù)據(jù),php獲取post數(shù)據(jù)
瀏覽地址:http://chinadenli.net/article12/dsehpdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)