1.參考資料
socket_create()函數需要三個參數:壹個協議、壹個socket類型、壹個公***協議。socket_create()函數運行成功返回壹個
包含socket的資源類型,如果沒有成功則返回false。
Socket函數
函數名? 描述
函數名 描述
socket_accept() 接受壹個Socket連接
socket_bind() 把socket綁定在壹個IP地址和端口上
socket_clear_error() 清除socket的錯誤或最後的錯誤代碼
socket_close() 關閉壹個socket資源
socket_connect() 開始壹個socket連接
socket_create_listen() 在指定端口打開壹個socket監聽
socket_create_pair() 產生壹對沒有差別的socket到壹個數組裏
socket_create() 產生壹個socket,相當於產生壹個socket的數據結構
socket_get_option() 獲取socket選項
socket_getpeername() 獲取遠程類似主機的ip地址
socket_getsockname() 獲取本地socket的ip地址
socket_iovec_add() 添加壹個新的向量到壹個分散/聚合的數組
socket_iovec_alloc() 這個函數創建壹個能夠發送接收讀寫的iovec數據結構
socket_iovec_delete() 刪除壹個已分配的iovec
socket_iovec_fetch() 返回指定的iovec資源的數據
socket_iovec_free() 釋放壹個iovec資源
socket_iovec_set() 設置iovec的數據新值
socket_last_error() 獲取當前socket的最後錯誤代碼
socket_listen() 監聽由指定socket的所有連接
socket_read() 讀取指定長度的數據
socket_readv() 讀取從分散/聚合數組過來的數據
socket_recv() 從socket裏結束數據到緩存
socket_recvfrom() 接受數據從指定的socket,如果沒有指定則默認當前socket
socket_recvmsg() 從iovec裏接受消息
socket_select() 多路選擇
socket_send() 這個函數發送數據到已連接的socket
socket_sendmsg() 發送消息到socket
socket_sendto() 發送消息到指定地址的socket
socket_set_block() 在socket裏設置為塊模式
socket_set_nonblock() socket裏設置為非塊模式
socket_set_option() 設置socket選項
socket_shutdown() 這個函數允許妳關閉讀、寫、或指定的socket
socket_strerror() 返回指定錯誤號的周詳錯誤
socket_write() 寫數據到socket緩存
socket_writev() 寫數據到分散/聚合數組
2.代碼:
<?php$sendStr?=?'30?32?30?34?03?30?33';?//?16進制數據
$sendStrArray?=?str_split(str_replace('?',?'',?$sendStr),?2);?//?將16進制數據轉換成兩個壹組的數組
$socket?=?socket_create(AF_INET,?SOCK_STREAM,?getprotobyname("tcp"));?//?創建Socket
if?(socket_connect($socket,?"192.168.1.100",?8080))?{?//連接
for?($j?=?0;?$j?<?count($sendStrArray);?$j++)?{
socket_write($socket,?chr(hexdec($sendStrArray[$j])));?//?逐組數據發送
}
$receiveStr?=?"";
$receiveStr?=?socket_read($socket,?1024,?PHP_BINARY_READ);?//?采用2進制方式接收數據
$receiveStrHex?=?bin2hex($receiveStr);?//?將2進制數據轉換成16進制
echo?"client:"?.?$receiveStrHex;
}
socket_close($socket);?//?關閉Socket
>