linux网络编程实现投票功能
投票系统
1.说明:
写了一个投票系统。过程是先配置好server。在写一个网上投票功能,要实现网上投票功能。
事实上功能实现还是非常easy的,麻烦一点的在于过程比較繁杂,要做的东西还是挺多的!
2.过程:
第一步:配置httpdserver
先配置好httpdserver。
我先下载好了和httpserver的包后,因为fedora的httpd配置相对照较简单,所以我也仅仅是简单的做了一下改动,例如以下:
把:
<Directory"/var/www/cgi-bin">
AllowOverrideNone
OptionsNone
Requireall granted
</Directory>
改动为:
<Directory"/var/www/cgi-bin">
AllowOverrideNone
AddHandlercgi-script py sh cgi
OptionsExecCGI
Orderallow,deny
Allowfrom all
Requireall granted
</Directory>
然后在开启httpdserver就好了。
第二步:建立数据库
因为投票要涉及到数据库的改动与更新,所以要事先建立好一个数据库。我建立了一个名为poll的数据库,并为poll数据库建立了一个名为poll_name的表,里面加入了name与num两个字段,并插入了
“ alop“ ,0
与 “ daoyan“ 0两个值,用于投票,须要注意的是,建立数据库仅仅是为了投票后要进行数据更新在返回页面,所以,假设想简单一点的话。我认为用文件就足够了。不够这个样例是由于数据极为简单,但要是若有非常多复杂的操作的话,还是建立数据库比較方便!
第三步:写cgi程序
这是最关键的一步了。这一步要完毕的是当用户投票之后。通过通信技术返回给server之后,server该怎样处理的问题,毫无疑问,这次我们要做的就是当客服端选择某个人,如”alop“。并点击,server收到这个消息后,要对数据库的里”alop”的num值+1就可以,这里我是用python写的程序,例如以下:
#!/usr/bin/envpython #coding=utf-8 importcgi, cgitb importMySQLdb db= MySQLdb.connect("localhost", "root", "","poll") cursor= db.cursor() sql_update= "UPDATE poll_name SET num = num + 1 WHERE name = '%s'" sql_query= "SELECT num FROM poll_name" results= () form= cgi.FieldStorage() name= form.getvalue('name') sql_update= sql_update % name cursor.execute(sql_update) db.commit() cursor.execute(sql_query) results= cursor.fetchall() print"Content-type:text/html\r\n\r\n" print"<html>" print"<head>" print"<title>Radio - Fourth CGI Program</title>" print"</head>" print"<body>" print'<form action="/cgi-bin/election.py" method="post">' print'<input type="radio" name="name" value="alop"/> alop %d </br>' % results[0][0] print'<input type="radio" name="name"value="daoyan" /> daoyan %d </br>' %results[1][0] print'<input type="submit" value="submit" />' print"</form>" print"</body>" print"</html>"
整个程序还是非常easy的。
这样,就完毕了整个过程:
3.效果
效果例如以下:
当点击alop后,例如以下
这样,整个过程就完毕了。
linux网络编程实现投票功能的更多相关文章
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- linux网络编程_1
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...
- Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- [转] - Linux网络编程 -- 网络知识介绍
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- Linux C 程序 Linux网络编程(21)
Linux网络编程网络编程必备的理论基础网络模型,地址,端口,TCP/IP协议 TCP/IP协议是目前世界上使用最广泛的网络通信协议日常中的大部分应用使用该系列协议(浏览网页,收发电子邮件,QQ聊天等 ...
- 【转】Linux网络编程入门
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- 《转》Linux网络编程入门
原地址:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html (一)Linux网络编程--网络知识介绍 Linux网络编程-- ...
随机推荐
- 关于Webpack详述系列文章 (第二篇)
1.缩小文件搜索范围 1.1.1 include & exclude module:{ rules:[ { test:/\.js$/, use:['babel-loader?cacheDire ...
- ImportError: No module named tornado.ioloop 记录过程
ImportError: No module named tornado.ioloop 记录过程 安装 pycurl pip install pycurl 报错 'curl-config' no ...
- Core Animation 文档翻译—附录B(可动画的属性)
前言 许多CALayer和CIFliter的属性都是可动画的.本节附录列出了这些属性默认使用的动画. CALayer可动画属性 表B-1展示了CALayer类的可动画属性.针对每个属性此表 ...
- Spark 概念学习系列之Spark 多语言编程
不多说,直接上干货! Spark 同时支持Scala.Python.Java 三种应用程序API编程接口和编程方式, 考虑到大数据处理的特性,一般会优先使用Scala进行编程,其次是Python,最后 ...
- 00087_File
1.IO概述 (1)要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘.光盘.U盘等)上: (2)当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作 ...
- iOS开发RunLoop学习:一:RunLoop简单介绍
一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementatio ...
- 洛谷—— P1018 乘积最大
https://www.luogu.org/problem/show?pid=1018#sub 题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年 ...
- Android界面相关的类
Android界面相关的类 Window Activity的显示界面对象,并作为顶层View被加入到WindowManager中.Window提供了标准的UI显示策略:界面背景.标题区域.默认的事件处 ...
- 【剑指offer】对面和相等的正方体
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26509459 剑指offer上的全排列相关题目. 输入一个含有8个数字的数组.推断有么有可 ...
- Web安全之Cookie劫持
1. Cookie是什么? 2. 窃取的原理是什么? 3. 系统如何防Cookie劫持呢? 看完这三个回答, 你就明白哪位传奇大侠是如何成功的!!! Cookie: HTTP天然是无状态的协议, 为了 ...