linux网络编程实现投票功能

投票系统

1.说明:

写了一个投票系统,过程是先配置好服务器,在写一个网上投票功能,要实现网上投票功能。

其实功能实现还是很简单的,麻烦一点的在于过程比较繁杂,要做的东西还是挺多的!

2.过程:

第一步:配置httpd服务器

先配置好httpd服务器。我先下载好了和http服务器的包后,由于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>

然后在开启httpd服务器就好了。

第二步:建立数据库

由于投票要涉及到数据库的修改与更新,所以要事先建立好一个数据库,我建立了一个名为poll的数据库,并为poll数据库建立了一个名为poll_name的表,里面添加了name与num两个字段,并插入了

“ alop“ ,0
与 “ daoyan“ 0两个值,用于投票,需要注意的是,建立数据库只是为了投票后要进行数据更新在返回页面,所以,如果想简单一点的话,我觉得用文件就足够了。不够这个例子是因为数据极为简单,但要是若有很多复杂的操作的话,还是建立数据库比较方便!

第三步:写cgi程序

这是最关键的一步了,这一步要完成的是当用户投票之后,通过通信技术返回给服务器之后,服务器该如何处理的问题,毫无疑问,这次我们要做的就是当客服端选择某个人,如”alop“,并点击,服务器收到这个消息后,要对数据库的里”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>"

整个程序还是很简单的。

这样,就完成了整个过程:

3.效果

效果如下:

当点击alop后,如下

这样,整个过程就完成了。

linux网络编程实现投票功能,布布扣,bubuko.com

时间: 2024-08-05 11:09:01

linux网络编程实现投票功能的相关文章

很全的linux网络编程技巧

注:作者王晓,本人认为总结得很好,故记之,绝无侵权之意. 1. LINUX网络编程基础知识 1 1.1. TCP/IP协议概述 1 1.2. OSI参考模型及TCP/IP参考模型 1 1.3. TCP协议 3 1.4. UDP协议 5 1.5. 协议的选择 6 2. 网络相关概念 6 2.1. socket概念 7 2.2. socket类型 8 2.3. socket信息数据结构 8 2.4. 数据存储优先顺序的转换 8 2.5. 地址格式转化 9 2.6. 名字地址转化 10 3. sock

Linux网络编程

第二章 Linux网络编程 2.1客户——服务器模型 目前大多数网络应用程序在编写时都采用客户—服务器模型,假设一端是客户,另一端是服务器,让服务器提供给客户一定的服务内容.它要求有一方(服务器方)在启动执行程序后(无限期地)等待其他客户端程序与之通信.这里可以再分为两种具体类型:并发型交互与重复型交互. (1)并发型交互.在并发型交互模式下,程序的主要运作步骤如下: ·等待一个客户请求的到来: ·生成一个新的进程或者任务来处理这个客户请求,同时这里还可以接收其他客户的请求,处理结束后,终止这个

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str

Linux网络编程入门 (转载)

http://www.cnblogs.com/RascallySnake/archive/2012/01/04/2312564.html (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件

Linux网络编程--多播

一.多播介绍 什么是多播? 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信.单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信.实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途.多播,也称为"组播",将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据. 多播的地址是特定的,D类地址用于多播.D类

Linux网络编程:客户端/服务器的简单实现

一. Socket的基本知识 1. socket功能 Socket层次 Socket实质上提供了进程通信的端点,进程通信之前,双方必须首先各自创建一个端点,否则是没有办法建立联系并相互通信的. 每一个Socket都一个半相关描述: {协议, 本地地址, 本地端口} 完整的Socket的描述: {协议, 本地地址, 本地端口, 远程地址, 远程端口} 2. Socket工作流程 面向连接(TCP)的Socket工作流程 UDP的socket工作流程 l 服务器端 首先,服务器应用程序用系统调用so

Linux网络编程入门

(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端 和客户端相对应的程序即为服务端程序.被动的等待外面的程序来和自己通

Linux网络编程------概述

提供了完善强大的网络功能. 1.完善的内置网络.协议丰富,和内核紧密. 2.提供大量Intenet的软件. 3.非常多的命令.完成文件传输. 4.远程访问支持. 5.安全可靠. Linux网络模型: 协议: 数据链路层协议:以太网协议 网络层协议:IP(Internet协议) ICMP(网际控制报文协议)  ARP(地址解析协议) 传输层协议:TCP(面向连接可靠传输)   UDP(非连接不可靠传输协议) 应用层协议:Telnet  文件传输协议(FTP TFTP),简单文件传输协议(SMTP)

Linux网络编程函数

转自:http://blog.csdn.net/hrbeuwhw/article/details/8050911 1.字节序函数 #include<netinet.h> uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); 返回:网络字节序值 uint16_t ntohs(uint16_t net16bitvalue); uint32_t ntohl(uint32_t net32bit