日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

socket编程 (PHP实现)

發(fā)布時(shí)間:2024/9/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket编程 (PHP实现) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一個(gè)星期前PHP已經(jīng)完工了這個(gè)程序一直沒(méi)有時(shí)間寫博客。今天把這個(gè)程序放上來(lái),在網(wǎng)上用PHP實(shí)現(xiàn)的socket也不多。所以放上自己寫的程序,希望能給需要的人提供一些幫助。自學(xué)PHP程序沒(méi)多久若有漏洞與不足請(qǐng)多多諒解!

功能:主要是提供登錄功能,成績(jī)查詢功能,登出功能三種

程序主體:分三大塊

?Index.php(登錄界面) ?Client.php (客戶界面) +request.php(函數(shù)) ?Server.php (服務(wù)器界面) +response.php (函數(shù)) +conn.php(數(shù)據(jù)庫(kù)連接) 用的是TCP, 由于PHP本身不支持多線程所以只實(shí)現(xiàn)了客戶服務(wù)器一對(duì)一。服務(wù)端由一個(gè)變量記錄了當(dāng)前用戶。 通信過(guò)程: 在客戶端請(qǐng)求通信時(shí)現(xiàn)發(fā)送一個(gè)字符串至服務(wù)端,服務(wù)端有字符串得知需要提供的服務(wù)并轉(zhuǎn)入相應(yīng)的分支。 具體代碼如下: 1 <?php 2 //index.php 3 //write for 張小豪 4 if (isset($_COOKIE["user"]) && $_COOKIE["user"]){ 5 ?> 6 <script> 7 location.href="../socket/client.php?user=<?php echo $_COOKIE["user"]; ?>"; 8 </script> 9 <?php 10 } 11 ?> 12 <html> 13 <meta charset="UTF-8"> 14 <head> 15 <title>登陸界面</title> 16 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 17 </head> 18 19 </body> 20 <SCRIPT language=javascript> 21 22 function CheckPost() 23 { 24 //var username=document.getElementById("username"); 25 //alert(username.innerHTML); 26 if(submitpage.username.value=="") 27 { 28 alert("請(qǐng)?zhí)顚懹脩裘?#xff01;"); 29 //submit.user.focus(); 30 return false; 31 } 32 if(submitpage.password.value=="") 33 { 34 alert("請(qǐng)?zhí)顚懨艽a!"); 35 //submit.user.focus(); 36 return false; 37 } 38 } 39 40 </SCRIPT> 41 42 <h3><center>客戶端登錄</center></h3> 43 <form action = "index.php" name = "submitpage" method = "post" οnsubmit="return CheckPost();"> 44 <center> 45 <p>用戶名:<input type = "text" id="username" name = "username" size = "20"></p> 46 <p>密碼:&nbsp; <input type = "password" name = "password" size = "20"></p> 47 <input type = "submit" name = "submit" value = "提交"> 48 </center> 49 </form> 50 <?php 51 set_time_limit(0); 52 53 $host = "127.0.0.1"; 54 $port = 8890; 55 if(@$_POST['submit']){ 56 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); // 創(chuàng)建一個(gè)Socket 57 58 $connection = socket_connect($socket, $host, $port) or die("Could not connet server\n"); // 連接 59 60 socket_write($socket, "login\n") or die("Write failed\n"); //通知服務(wù)器已經(jīng)登陸 61 socket_write($socket, $_POST['username']) or die("Write failed\n"); // 將用戶名發(fā)送到服務(wù)器 62 63 if ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) { 64 //echo("Username sent was: time\nPassword was:" . $buffer . "\n"); 65 } 66 socket_close($socket); 67 if(strcmp(trim($buffer),"busy")==0){ 68 ?> 69 <script> 70 alert("服務(wù)器忙\n"); 71 </script> 72 <?php 73 } 74 else if(strcmp(trim($buffer),"no username")==0){ 75 ?> 76 <script> 77 alert("用戶名不存在\n"); 78 </script> 79 <?php 80 //echo "用戶名不存在\n"; 81 }else{ 82 $buffer = trim($buffer); 83 //echo $buffer."<br>"; 84 //echo md5($_POST['password'])."<br>"; 85 if(strcmp($buffer, md5($_POST['password']))==0){ 86 //echo "登錄成功!"; 87 ?> 88 <script> 89 alert("登錄成功!!\n"); 90 location.href="../socket/client.php?user=<?php echo $_POST['username']; ?>"; 91 </script> 92 <?php 93 } 94 else{ 95 ?> 96 <script> 97 alert("密碼錯(cuò)誤!\n"); 98 </script> 99 <?php 100 //echo "密碼錯(cuò)誤!"; 101 } 102 } 103 } 104 105 ?> 106 107 108 </body> 109 </html> 1 <?php 2 //client.php 3 //write for 張小豪 4 include("request.php"); 5 set_time_limit(0); 6 7 $host = "127.0.0.1"; 8 $port = 8890; 9 10 11 if(@$_POST['submit']){ 12 request_submit($host, $port); 13 } 14 if(@$_POST['logout']){ 15 request_logout($host, $port); 16 setcookie("user"); 17 ?> 18 <script> 19 location.href="../socket/index.php"; 20 </script> 21 <?php 22 } 23 24 if(isset($_GET['user'])) 25 setcookie("user", $_GET['user'], time()+3600); 26 else{ 27 ?> 28 <script> 29 alert("請(qǐng)先登錄!"); 30 location.href="../socket/index.php"; 31 </script> 32 <?php 33 } 34 35 ?> 36 37 <html> 38 <head> 39 <title>socket客戶端</title> 40 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 41 </head> 42 43 <body> 44 45 <?php 46 //echo $_user = $_GET['user']?$_GET['user']:$_COOKIE['user']; 47 //print_r($_COOKIE); 48 //echo "user:".$_GET['user']; 49 ?> 50 51 <SCRIPT language=javascript> 52 <!-- 53 function CheckPost() 54 { 55 //alert(submitpage.getElementById('logout').onclick); 56 if(submitpage.username.value=="" && submitpage.logout.οnclick==false) 57 { 58 alert("請(qǐng)?zhí)顚憣W(xué)號(hào)!"); 59 //submit.username.focus(); 60 return false; 61 } 62 } 63 --> 64 </SCRIPT> 65 66 <h3><center>socket客戶端程序(q版成績(jī)查詢~.~)</center></h3> 67 <font align="left">歡迎 68 <?php 69 if(isset($_COOKIE['user']) && $_COOKIE['user']) 70 $str = $_COOKIE['user']; 71 else 72 $str = $_GET['user']; 73 echo $str; 74 ?> 75 !! 76 </font> 77 <form action = "client.php" name = "submitpage" method = "post" οnsubmit="return CheckPost();"> 78 <input type = "submit" name = "logout" value = "登出"></input> 79 <br><br> 80 81 <center> 82 <p>請(qǐng)輸入學(xué)號(hào):<input type = "text" name = "username" size = "20"></input></p> 83 <input type = "submit" name = "submit" value = "提交"></input> 84 </center> 85 </form> 86 87 </center> 88 89 </body> 90 </html> 1 <?php 2 //request for client 3 //request.php 4 //write for 張小豪 5 function request_submit($host, $port){ 6 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); // 創(chuàng)建一個(gè)Socket 7 $connection = socket_connect($socket, $host, $port) or die("Could not connet server\n"); // 連接 8 socket_write($socket, "user\n") or die("Write failed\n"); //通知服務(wù)器已經(jīng)登陸 9 if(isset($_COOKIE['user']) && $_COOKIE['user']) 10 $str = $_COOKIE['user']; 11 else 12 $str = $_GET['user']; 13 socket_write($socket, $str."\n") or die("Write failed\n"); // 將用戶名發(fā)送到服務(wù)器*/ 14 socket_write($socket, $_POST['username']) or die("Write failed\n"); // 將用戶名發(fā)送到服務(wù)器 15 16 if ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) { 17 ?> 18 <script> 19 var str = "The student ID: <?php echo $_POST['username']; ?>\nGPA was:<?php echo trim($buffer); ?>\n"; 20 alert(str); 21 location.href="../socket/client.php?user=<?php echo $_COOKIE['user']; ?>"; 22 </script> 23 <?php 24 } 25 socket_close($socket); 26 } 27 28 function request_logout($host, $port){ 29 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); // 創(chuàng)建一個(gè)Socket 30 $connection = socket_connect($socket, $host, $port) or die("Could not connet server\n"); // 連接 31 socket_write($socket, "logout\n") or die("Write failed\n"); //通知服務(wù)器已經(jīng)登陸 32 if(isset($_COOKIE['user']) && $_COOKIE['user']) 33 $str = $_COOKIE['user']; 34 else 35 $str = $_GET['user']; 36 socket_write($socket, $str."\n") or die("Write failed\n"); // 將用戶名發(fā)送到服務(wù)器*/ 37 38 if ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) { 39 ?> 40 <script> 41 var str = "user: <?php echo $str; ?> logout success!\n"; 42 alert(str); 43 </script> 44 <?php 45 } 46 socket_close($socket); 47 } 48 49 ?> 1 <?php 2 //server.php 3 //write for 張小豪 4 include ("conn.php"); 5 include ("response.php"); 6 set_time_limit(0); 7 8 $host = "127.0.0.1"; 9 $port = 8890; 10 $localuser = ""; //當(dāng)前連接用戶名 11 12 for($i=0; $i<5; $i++){ 13 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n"); // 創(chuàng)建一個(gè)Socket 14 $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n"); //綁定Socket到端口 15 $result = socket_listen($socket, 3) or die("Could not set up socket listener\n"); // 開始監(jiān)聽連接 16 $spawn = socket_accept($socket) or die("Could not accept incoming connection\n"); // 處理通信 17 18 $choose = socket_read($spawn, 1024, PHP_NORMAL_READ) or die("Could not read input\n");//接受選擇符 19 $choose = trim($choose); 20 echo $choose."<br>"; 21 //echo "i: ".$i."\n"; 22 if($choose=="user"){ 23 response_user($spawn, $localuser); 24 }else if($choose=="login"){ 25 response_login($spawn, $localuser); 26 }else if($choose=="logout"){ 27 response_logout($spawn, $localuser); 28 } 29 // 關(guān)閉sockets 30 socket_close($spawn); 31 socket_close($socket); 32 } 1 <?php 2 //response for server 3 //response.php 4 //write for 張小豪 5 function response_user($spawn, $localuser){ 6 $localuser = socket_read($spawn, 1024, PHP_NORMAL_READ) or die("Could not read input\n"); // 數(shù)據(jù)傳送 獲得客戶端的輸入 7 echo "localuser: ".$localuser."\n"; 8 $input = socket_read($spawn, 1024) or die("Could not read input\n"); // 數(shù)據(jù)傳送 獲得客戶端的輸入 9 $input = trim($input); 10 echo 'input:', $input, "\n"; 11 //從數(shù)據(jù)庫(kù)中查gpa 12 $sql = "select gpa from gpalist where id = '$input'"; 13 $query = mysql_query($sql); 14 $row = mysql_fetch_array($query); 15 16 if($row['gpa']) { 17 $output = $row['gpa']. "\n"; //處理客戶端輸入并返回結(jié)果 18 }else{ 19 $output = "no imformation \n"; //處理客戶端輸入并返回結(jié)果 20 } 21 echo "output:", $output, "<br>"; 22 // 數(shù)據(jù)傳送 向客戶端寫入返回結(jié)果 23 socket_write($spawn, $output, strlen($output)) or die("Could not write output\n"); 24 } 25 26 function response_login($spawn, $localuser){ 27 $input = socket_read($spawn, 1024) or die("Could not read input\n"); // 數(shù)據(jù)傳送 獲得客戶端的輸入 28 $input = trim($input); 29 echo 'username:', $input, "\n"; 30 //從數(shù)據(jù)庫(kù)中查gpa 31 $sql = "select password from userlist where user = '$input'"; 32 $query = mysql_query($sql); 33 $row = mysql_fetch_array($query); 34 35 //print_r(row); 36 if($localuser!=""){ 37 $output = "busy\n"; 38 } 39 else{ 40 if($row['password']) { 41 $output = $row['password']. "\n"; //處理客戶端輸入并返回結(jié)果 42 }else{ 43 $output = "no username\n"; //處理客戶端輸入并返回結(jié)果 44 } 45 } 46 echo "output:", $output, "<br>"; 47 // 數(shù)據(jù)傳送 向客戶端寫入返回結(jié)果 48 socket_write($spawn, $output, strlen($output)) or die("Could not write output\n"); 49 } 50 51 function response_logout($spawn, $localuser){ 52 $input = socket_read($spawn, 1024, PHP_NORMAL_READ) or die("Could not read input\n"); // 數(shù)據(jù)傳送 獲得客戶端的輸入 53 $input = trim($input); 54 echo 'username:', $input, "logout<br>"; 55 $output = "success!\n"; 56 $localuser = ""; 57 // 數(shù)據(jù)傳送 向客戶端寫入返回結(jié)果 58 socket_write($spawn, $output, strlen($output)) or die("Could not write output\n"); 59 } 60 61 ?> 1 <?php 2 //連接數(shù)據(jù)庫(kù) 3 4 $conn = @mysql_connect("localhost", "root", "") or die ("connect error!"); 5 mysql_select_db("socket", $conn) or die ("select error!"); 6 mysql_query("set names 'utf8'") or die ("wrong"); 7 ?>

?

轉(zhuǎn)載于:https://www.cnblogs.com/shu-xiaohao/p/3350765.html

總結(jié)

以上是生活随笔為你收集整理的socket编程 (PHP实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。