TCP協(xié)議頭最少20個字節(jié),包括以下的區(qū)域
創(chuàng)新互聯(lián)云計算的互聯(lián)網(wǎng)服務提供商,擁有超過13年的服務器租用、溫江服務器租用、云服務器、虛擬空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務許可證。專業(yè)提供云主機、虛擬空間、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是
標示報問的返回地址。
TCP目的端口(Destination port):16位的目的端口域定義傳輸?shù)哪康摹_@個端口指明報文接收計算
機上的應用程序地址接口。
TCP序列號(序列碼,Sequence Number):32位
TCP應答號(Acknowledgment Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設置了ACK控制位,這個值表示一個準備接收的包的序列碼。
實時。在進行php接收tcpip的時候,是實時的。PHP(PHP:HypertextPreprocessor)即“超文本預處理器”,是在服務器端執(zhí)行的腳本語言,尤其適用于Web開發(fā)并可嵌入HTML中。PHP語法學習了C語言。
頭部加上超時控制,但對于很多服務器無效,因為服務器輸出超時很多在服務器控制,所以建議用cmd腳本方式運行此程序:
?php
set_time_limit(0); //禁用腳本超時
//?Create?the?socket?and?connect
$socket?=?socket_create(AF_INET,?SOCK_STREAM,?SOL_TCP);
$connection?=?socket_connect($socket,'116。236。128。220',?14580);
//?Write?some?test?data?to?our?socket
if(!socket_write($socket,?"user?NoCall?pass?-1?vers?test?1.0?filter?b/B*?\r\n"))
{
echo("pWrite?failed/p");
}
if(!file_exists('socket_log.html')){
file_put_contents('socket_log.html',?'script
var?xx?=?setInterval(function(){ //每5秒刷新一次頁面
window.location.reload();
},?5000);
/script');
}
//?Read?any?response?from?the?socket
while($buffer?=?socket_read($socket,?64,?PHP_NORMAL_READ))
{
echo?json_encode($buffer);?//轉換為json數(shù)據(jù)輸出
//記入文件
file_put_contents('socket_log.html',?json_encode($buffer),?FILE_APPEND);
}
echo("pDone?Reading?from?Socket/p");
使用方法:用命令行方式運行此腳本
php?script.php
腳本會一直運行到接收數(shù)據(jù)結束,并持續(xù)將收到的數(shù)據(jù)寫入socket_log.html文件。
在瀏覽器打開socket_log.html頁面,此頁面會自動每5秒刷新一次,來顯示最新的數(shù)據(jù)。
確保程序有權限創(chuàng)建及寫入socket_log.html文件
//創(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_bind的時候ip地址不能真回環(huán)地址如127.0.0.1
2.server.php后臺跑起來的時候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); ?