php模拟socket 多次发送数据的实现方法
表四:Socket函数<br>函数名 描述<br>socket_accept() 接受一个Socket连接<br>socket_bind() 把socket绑定在一个IP地址和端口上<br>socket_clear_error() 清除socket的错误或者最后的错误代码<br>socket_close() 关闭一个socket资源<br>socket_connect() 开始一个socket连接<br>socket_create_listen() 在指定端口打开一个socket监听<br>socket_create_pair() 产生一对没有区别的socket到一个数组里<br>socket_create() 产生一个socket,相当于产生一个socket的数据结构<br>socket_get_option() 获取socket选项<br>socket_getpeername() 获取远程类似主机的ip地址<br>socket_getsockname() 获取本地socket的ip地址<br>socket_iovec_add() 添加一个新的向量到一个分散/聚合的数组<br>socket_iovec_alloc() 这个函数创建一个能够发送接收读写的iovec数据结构<br>socket_iovec_delete() 删除一个已经分配的iovec<br>socket_iovec_fetch() 返回指定的iovec资源的数据<br>socket_iovec_free() 释放一个iovec资源<br>socket_iovec_set() 设置iovec的数据新值<br>socket_last_error() 获取当前socket的最后错误代码<br>socket_listen() 监听由指定socket的所有连接<br>socket_read() 读取指定长度的数据<br>socket_readv() 读取从分散/聚合数组过来的数据<br>socket_recv() 从socket里结束数据到缓存<br>socket_recvfrom() 接受数据从指定的socket,如果没有指定则默认当前socket<br>socket_recvmsg() 从iovec里接受消息<br>socket_select() 多路选择<br>socket_send() 这个函数发送数据到已连接的socket<br>socket_sendmsg() 发送消息到socket<br>socket_sendto() 发送消息到指定地址的socket<br>socket_set_block() 在socket里设置为块模式<br>socket_set_nonblock() socket里设置为非块模式<br>socket_set_option() 设置socket选项<br>socket_shutdown() 这个函数允许你关闭读、写、或者指定的socket<br>socket_strerror() 返回指定错误号的详细错误<br>socket_write() 写数据到socket缓存<br>socket_writev() 写数据到分散/聚合数组
<br>更多详细内容请查看:php教程er/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm">http://www.bkjia.com/phper/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm
<?php <br />//post.php<br>function Post($host,$port)<br>{<br> //$host="127.0.0.1";<br> //建立连接<br> $conn = fsockopen($host,$port);<br> if (!$conn) <br> {<br> die("Con error");<br> }<br> //循环发送5次数据<br> //<br> for($i = 0;$i {<br> $data="user_name=admin".$i;<br> WriteData($conn,$host,$data);<br> echo $i."<br>";<br> }<br> <br> fclose($conn);<br>}<br><br>function WriteData($conn,$host,$data)<br>{<br> $header = "POST /test.php HTTP/1.1rn";<br> $header.= "Host : {$host}rn";<br> $header.= "Content-type: application/x-www-form-urlencodedrn";<br> $header.= "Content-Length:".strlen($data)."rn";<br> //Keep-Alive是关键<br> $header.= "Connection: Keep-Alivernrn"; <br> $header.= "{$data}rnrn";<br> <br> fwrite($conn,$header);<br> <br> //取结果<br> //$result = '';<br> //while(!feof($conn))<br> //{<br> // $result .= fgets($conn,128);<br> //}<br> //return $result;<br>}<br><br>Post('127.0.0.1',80);<br> <br>?>
<?php <br /> //test.php<br> $fp = fopen('result.txt','a');<br> $data = $_POST['user_name']." -- ". date('Y-m-d H:i:s')."rn";<br> fwrite($fp,$data);<br> fclose($fp);<br>?>
再模仿post实现用户登录
socket.php<br><blockquote> <?php <br />/**<br>* @author macopad@qq.com<br>* 模拟socket发送post方式发送数据<br>* 发送文件为socket.php<br>* 接收数据为get_socket.php<br>* @var unknown_type<br>*/<br>$flag = 0;<br>//要post的数据<br>$argv = array(<br>‘username’=>’macopad@qq.com’,<br>‘password’=>’macopad’<br>);<br>//构造要 post的字符串<br>$params = ”;<br>foreach ($argv as $key=>$value)<br>{<br>if ($flag!=0)<br>{<br>$params .= ”&”;<br>$flag = 1;<br>}<br>$params.= $key.”=”;<br>$params.= urlencode($value);<br>$flag = 1;<br>}<br>$length = strlen($params);//post的长度<br>//创建socket连接<br>$post = fsockopen($HTTP_SERVER_VARS["SERVER_ADDR"],80,$errno,$errstr,10) or exit($errstr.”—>”.$errno);<br>//构造post请求的头<br>$header = ”POST /guojinyong/test/get_socket.php HTTP/1.1rn”; //制定为 POST的方法提交数据 及要提交到的页面和协议类型<br>$header .= ”Host:”.$HTTP_SERVER_VARS["SERVER_ADDR"].”rn”; //定义主机<br>$header .= ”Referer:http://”.$HTTP_SERVER_VARS["SERVER_ADDR"].”/guojinyong/test/socket.phprn”; //Referer信息,<br>$header .= ”Content-Type: application/x-www-form-urlencodedrn”; //说明这个请求为POST<br>$header .= ”Content-Length: ”.$length.”rn”; //提交的数据长度<br>$header .= ”Connection: Closernrn”;//关闭连接<br>$header .= $params.”rn”;//添加post的字符串<br>//发送post的数据<br>fputs($post,$header);<br>//接收get_socket.php返回的数据并打印出来<br>while(!feof($post))<br>{<br>echo fgets($post,1024);//从1024个字节之后开始获取<br>}<br>fclose($post); //关闭socket连接<br>?></blockquote><br>get_socket.php<br><blockquote> <pre class="brush:php;toolbar:false"><?php <br />echo ”Set-Cookie:name=Macopad; expires=Fri 12-Nov-99 3:59:59 GMT”;<br>$userName = ”";<br>$password = ”";<br>$userName = $_POST['username'];<br>$password = $_POST['password'];<br>echo ”<br>通过socket模拟程序发送数据!<br>”;<br>echo ”当前服务器是:”.$HTTP_SERVER_VARS["SERVER_ADDR"].”<br>”;<br>echo ”接受到的用户名是:” .$userName.”<br>接收到的密码是:”.$password;<br>显示结果<br>HTTP/1.1 200 OK Date: Wed, 14 Apr 2010 06:49:07 GMT Server: Apache X-Powered-By: PHP/5.2.5 Cache-Control: max-age=0 Expires: Wed, 14 Apr 2010 06:49:07 GMT Vary: Accept-Encoding Content-Length: 189 Connection: close Content-Type: text/html Set-Cookie:name=Macopad; expires=Fri 12-Nov-99 3:59:59 GMT<br>通过socket模拟程序发送数据!<br>当前服务器是:http://www.zhutiai.com
接受到的用户名是:macopad@qq.com<br>接收到的密码是:macopad

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
