Python 局域网 投票系统

2014-05-30 16:19:23 +08:00
 sennes
初学python两个月.期末有个作业是需要做一个基于局域网的投票系统.
大概就是就是选出“最多人喜欢的XX”就可以
本人想用python来实现 而且最好是{投票服务器和投票端都在终端下完成}
投票端的人在键盘敲入1.2.3.之类的序号即可~
但是现在没有方向,感觉学过的东西不足以完成这个任务。
想问一下:
1.完成这个投票系统 python 可行不?
2.需要具备哪方面的知识?(特别是局域网通信这一方面)
3.如果有人刚好有相关的资料希望能有share一下

希望帮我指个方向我自己折腾就好.不是伸手党~

再问个问题:
python能不能实现局域网内的文件交换?因为这个投票系统的作业不需要很高的安全性,所以打算把本地待投票的list、投票结果之类的都写进文件,然后通过文件通信来实现数据通信会不会简单?
4250 次点击
所在节点    问与答
14 条回复
sennes
2014-05-30 18:26:52 +08:00
不需要具体的代码,我只是想要知道一个折腾的方向即可。
给几个关键词我自己去查资料也可以
ritksm
2014-05-30 18:28:48 +08:00
socket
server/client
bingwenshi
2014-05-30 18:31:51 +08:00
不如直接做个web版 ?
majunbo
2014-05-30 18:34:29 +08:00
对,为什么不搞成Web?
sennes
2014-05-30 18:43:42 +08:00
@bingwenshi
@majunbo
因为是linux课的期末作业要求尽量用脚本来实现。
没有指定要用shell脚本所以我想用python来写。(而且shell脚本我不会
学校机子都有python所以想用python脚本的形式做。
实在不行我再用web的方式(这就简单很多了
:)
fdgogogo
2014-05-30 20:16:30 +08:00
其实终端下你也一样用web嘛, 传文件太heavy了, server写成api返回个json什么的就好了, 可以参考一下RESTful API。
这应用局域网还是互联网没什么差
JoyNeop
2014-05-30 20:43:36 +08:00
Django + MongoDB 就可以了吧。。。
Sylv
2014-05-30 20:57:05 +08:00
RPC
binux
2014-05-30 21:13:17 +08:00
./server.sh
#/bin/bash
QUIT=""; while [[ $QUIT != "finish" ]];do QUIT=`nc -l 9999` && echo $QUIT; done | tee vote.log | awk '{ a[$1]++ } END { for(k in a) print k, a[k]; }' | sort -k2nr

./vote.sh
#/bin/bash
echo $1 | nc localhost 9999

./finish.sh
#/bin/bash
echo "finish" | nc localhost 9999
binux
2014-05-30 21:19:13 +08:00
更正下服务器代码,把 finish 统计进去了

while true; do QUIT=`nc -l 9999`; [[ $QUIT == "finish" ]] && break || echo $QUIT; done | tee vote.log | awk '{ a[$1]++ } END { for(k in a) print k, a[k]; }' | sort -k2nr
sneezry
2014-05-30 21:26:18 +08:00
用udp的多播试试?
alexapollo
2014-05-30 21:31:15 +08:00
C/S B/S都可行
sennes
2014-06-01 12:42:30 +08:00
感谢大家 基本的投票功能已经完成了。接下来在慢慢完善功能,添加一点点安全性和防止刷票的机制.
用的是 Python Twisted 框架 . 学习了两天总算是找到了方向~
sennes
2014-06-08 01:17:17 +08:00
https://github.com/senzi/python_vote_server
只能做到这种程度了 周一就要演示验收了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/115067

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX