博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket编程 (PHP实现)
阅读量:6989 次
发布时间:2019-06-27

本文共 3363 字,大约阅读时间需要 11 分钟。

在一个星期前PHP已经完工了这个程序一直没有时间写博客。今天把这个程序放上来,在网上用PHP实现的socket也不多。所以放上自己写的程序,希望能给需要的人提供一些帮助。自学PHP程序没多久若有漏洞与不足请多多谅解!

功能:主要是提供登录功能,成绩查询功能,登出功能三种

程序主体:分三大块

•Index.php(登录界面)
•Client.php (客户界面)
+request.php(函数)
•Server.php (服务器界面)
+response.php (函数)
+conn.php(数据库连接)
用的是TCP, 由于PHP本身不支持多线程所以只实现了客户服务器一对一。服务端由一个变量记录了当前用户。
通信过程:
在客户端请求通信时现发送一个字符串至服务端,服务端有字符串得知需要提供的服务并转入相应的分支。
具体代码如下:
 
1 
6 9
12 13
14 15 登陆界面 16
17 18 19 20 41 42

客户端登录

43
44
45

用户名:

46

密码: 

47
48
49
50
69 72
76 79
"; 84 //echo md5($_POST['password'])."
"; 85 if(strcmp($buffer, md5($_POST['password']))==0){ 86 //echo "登录成功!"; 87 ?> 88 92
96 99
106 107 108 109
1 
18 21
28 32
36 37 38 39 socket客户端40
41 42 43 44 45
50 51 65 66

socket客户端程序(q版成绩查询~.~)

67 欢迎 68
75 !! 76
77
78
79
80 81
82

请输入学号:

83
84
85
86 87 88 89 90
1 
18 23
40 44
1 
";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 // 关闭sockets30 socket_close($spawn);31 socket_close($socket);32 }
1 
";22 // 数据传送 向客户端写入返回结果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"); // 数据传送 获得客户端的输入28 $input = trim($input);29 echo 'username:', $input, "\n";30 //从数据库中查gpa31 $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"; //处理客户端输入并返回结果42 }else{43 $output = "no username\n"; //处理客户端输入并返回结果44 }45 }46 echo "output:", $output, "
";47 // 数据传送 向客户端写入返回结果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"); // 数据传送 获得客户端的输入53 $input = trim($input);54 echo 'username:', $input, "logout
";55 $output = "success!\n";56 $localuser = "";57 // 数据传送 向客户端写入返回结果58 socket_write($spawn, $output, strlen($output)) or die("Could not write output\n"); 59 }60 61 ?>
1 

 

转载于:https://www.cnblogs.com/shu-xiaohao/p/3350765.html

你可能感兴趣的文章
百度地图、ECharts整合HT for Web网络拓扑图应用
查看>>
Unity查找子物体的方式-怎么查找GameObject
查看>>
大数据学习系列之三 ----- HBase Java Api 图文详解
查看>>
cookie和session
查看>>
关于前端复用的构思
查看>>
微信小程序连接本地接口(转)
查看>>
小白的正则表达式学习之旅-02
查看>>
学习C语言必须知道的理论知识(第三章-数据类型的分类)
查看>>
hdu 素数环
查看>>
H3C CAS 介绍 & 基本概念
查看>>
xxx
查看>>
openSUSE 安装 Caffe
查看>>
你可能没注意的CSS单位
查看>>
咱计算机专业的人,能不能不那么特别地彰显对语文的无知?——再谈面向对象......
查看>>
foreach Transform 同时chils.setParent引起的bug
查看>>
AES加密--适用于RC2、RC4和Blowfish
查看>>
如何强制删除一个apk
查看>>
SHA算法摘要处理
查看>>
[HEOI2012]采花 BZOJ2743
查看>>
Codevs 3305 水果姐逛水果街Ⅱ 倍增LCA
查看>>