linux网络编程实现投票功能

2023-10-26

投票系统

1.说明:

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

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

2.过程:

第一步:配置httpd服务器

先配置好httpd服务器。我先下载好了和http服务器的包后,由于fedorahttpd配置相对比较简单,所以我也只是简单的做了一下修改,如下:

把:

<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的表,里面添加了namenum两个字段,并插入了

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

第三步:写cgi程序

这是最关键的一步了,这一步要完成的是当用户投票之后,通过通信技术返回给服务器之后,服务器该如何处理的问题,毫无疑问,这次我们要做的就是当客服端选择某个人,如”alop“,并点击,服务器收到这个消息后,要对数据库的里”alop”num+1即可,这里我是用python写的程序,如下:

#!/usr/bin/envpython#coding=utf-8importcgi, cgitbimportMySQLdbdb= 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 % namecursor.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后,如下


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




from: http://www.th7.cn/system/lin/201405/56967.shtml

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 网络层:IP协议

    本博文分享的是网络层的IP协议 从IP协议的基本概念 协议格式开始分析并分享出来 IP协议的基本概念 不同于讨论TCP UDP时只讨论通信主机之间的关系 在讨论IP协议中 会加上主机之间的网络来一起进行讨论分析 主机 一般配有IP地址 路由
  • whois命令常见用法

    whois命令常见用法 whois命令简介 安装whois Windows使用whois Linux安装whois whois常见用法 Linux下whois查询域名注册信息 whois命令简介 whois就是一个用来查询域名是否已经被注册
  • C++在线五子棋对战(网页版)项目:websocket协议

    目标 认识理解websocket协议 websocket切换过程和websocket协议格式 认识和学会使用websocketpp库常用接口 了解websocketpp库搭建服务器流程 认识和学会使用websocketpp库bin接口 最后
  • 使用sersync实现数据实时同步

    使用sersync实现数据实时同步 sersync诞生过程 部署前提 配置rsync服务端 部署sersync 配置sersync的path变量 修改sersync配置文件 sersync常用参数 使用服务文件实现开机自启动 实时同步服务d
  • 【Linux网络(C++)】——网络套接字(TCP/UDP编程模型)多进程,多线程,线程池服务器开发(画图解析)

    目录 一 套接字基本概念 IP地址 TCP和UDP协议 端口号 端口号vs 进程pid 网络字节序 本地字节序转换成网络字节序 网络字节序转换为本地字节序 二 套接字的基本操作 socket的创建 域 domain 类型 type 协议 P
  • 高并发的epoll+线程池,业务在线程池内

    epoll是linux下高并发服务器的完美方案 因为是基于事件触发的 所以比select快的不只是一个数量级 单线程epoll 触发量可达到15000 但是加上业务后 因为大多数业务都与数据库打交道 所以就会存在阻塞的情况 这个时候就必须用
  • linux 网络编程---->多路复用:select实例!

    好吧 我承认找了好久 网上都没有像样的完整的实例 然后自己参照书自己写一个吧 gt server 端代码 gt server c include
  • Linux网络通信总结

    网络IO之阻塞 非阻塞 同步 异步 单播 多播 组播 广播 多路复用POLL SELECT epoll 超时 read write accept connect 超时 实现 1 用select来设置超时机制 2 使用setsockopt 函
  • 基于tcpdump实例讲解TCP/IP协议

    前言 虽然网络编程的socket大家很多都会操作 但是很多还是不熟悉socket编程中 底层TCP IP协议的交互过程 本文会一个简单的客户端程序和服务端程序的交互过程 使用tcpdump抓包 实例讲解客户端和服务端的TCP IP交互细节
  • linux系统PXE自动装机无人值守

    PXE高效批量网络装机 PXE服务允许客户机通过网络从远程服务器下载引导镜像 并安装文件或整个操作系统 必须满足的前提条件 客户机的网卡支持PXE协议 且主板支持网络引导 网络中有一台DHCP服务器为客户机分配地址 指定引导文件位置 服务器
  • Linux下Socket编程

    什么是Socket Socket接口是TCP IP网络的API Socket接口定义了许多函数或例程 程式员能够用他们来研发TCP IP网络上的应用程式 要学Internet上的TCP IP网络编程 必须理解Socket接口 Socket接
  • linux下异步RPC的阶段性总结-非阻塞SOCKET客户端

    尽可能使用非阻塞socket int flags s flags fcntl fd F GETFL 0 if flags 1 close fd return 1 flags O NONBLOCK s fcntl fd F SETFL fla
  • TCP通信流程解析

    B S通信简述 整个计算机网络的实现体现为协议的实现 TCP IP协议是Internet的核心协议 HTTP协议是比TCP更高层次的应用层协议 HTTP HyperText Transfer Protocol 超文本传输协议 是互联网上应用
  • linux c socket之异步IO

    cpp view plain copy File UDPEchoClient TimeOut c Author 云守护 include
  • 【网络】——UDP复习笔记

    目录 1 UDP报文结构 2 UDP缓冲区 3 UDP特点 4 课后题 1 UDP报文结构 2 UDP缓冲区 UDP没有真正意义上的发送缓冲区 应用层调用sendto 函数直接将数据应用层的数据拷贝给传输层 传输层再构建UDP报头 然后再交
  • 高并发的epoll+多线程

    epoll是linux下高并发服务器的完美方案 因为是基于事件触发的 所以比select快的不只是一个数量级 单线程epoll 触发量可达到15000 但是加上业务后 因为大多数业务都与数据库打交道 所以就会存在阻塞的情况 这个时候就必须用
  • 【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分

    个人主页 努力学习的少年 版权 本文由 努力学习的少年 原创 在CSDN首发 需要转载请联系博主 如果文章对你有帮助 欢迎关注 点赞 收藏 一键三连 和订阅专栏哦 IP数据报格式 版本 占4位 指ip协议的版本 首部长度 表示IP数据报中报
  • 【网络自定向下学习】——TCP报文段的详细解析

    个人主页 努力学习的少年 版权 本文由 努力学习的少年 原创 在CSDN首发 需要转载请联系博主 如果文章对你有帮助 欢迎关注 点赞 收藏 一键三连 和订阅专栏哦 目录 一 Tcp报文段的结构 二 首部长度 三 窗口大小 四 序列号和确认序
  • Http协议详解

    引入 超文本传输协议 HTTP HyperText Transfer Protocol 是互联网上应用最为广泛的一种网络协议 所有的WWW文件都必须遵守这个标准 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 1960年美
  • 超级详细Tcpdump 的用法

    1 抓取回环网口的包 tcpdump i lo 2 防止包截断 tcpdump s0 3 以数字显示主机及端口 tcpdump n 第一种是关于类型的关键字 主要包括host net port 例如 host 210 27 48 2 指明

随机推荐

  • 在VS中配置VTK

    VTK与VS结合使用有两种配置方式 一种是配置cmake 一种是配置VS 两者配置一者即可 我这里只讲解一下配置VS的步骤吧 我用的是VS2010 打开VS 找到属性 在VC 目录中修改包含目录和库目录为自己安装VTK的include和li
  • 华为OD机试真题-最多等和不相交连续子序列【2023Q2】【JAVA、Python、C++】

    题目描述 给定一个数组 我们称其中连续的元素为连续子序列 称这些元素的和为连续子序列的和 数组中可能存在几组连续子序列 组内的连续子序列互不相交且有相同的和 求一组连续子序列 组内子序列的数目最多 输出这个数目 输入描述 第一行输入为数组长
  • 怎么用计算机算lnx,ln计算(log计算器在线)

    ln MN lnM lnN ln M N lnM lnN ln M n nlnM ln1 0 lne 1 注意 拆开后 M N需要大于0 没有 ln M N lnM lnN 和ln M N lnM lnN lnx 是e x的反函数 也就是说
  • 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...

    华为手机短信提醒设置方法 1 检查当前设置的默认短信应用是哪个应用 点击桌面 设置 图标 找到 应用程序管理 选择 默认应用设置 选择 信息 可以看到当前正在使用的默认短信应用名称 如果使用的是第三方短信应用 请将 信息 勾选 改为使用默认
  • 制造蝴蝶飓风,微众区块链的蝶变和ESG新使命

    时间来到新世纪 共同繁荣 人与自然和谐发展等成为全球共识的背景下 越来越多的国家和组织开始践行ESG 环境 社会和公司治理 理念 在中国 乡村振兴 共同富裕 双碳战略 数字经济等国家级战略的推出 也旨在推动 效率优先 的发展模式 向公平与可
  • 生成openVPN客户端配置的shell脚本

    脚本介绍 在服务端 etc openvpn 目录下存放该脚本 client sh 脚本运行 运行方式 client sh client name client name填你想输入的客户端名称 例如 输入yes 和相应的ca密钥 运行成功如图
  • Python调用WebServer(WSDL)注意事项

    本人很少与WebServer交互 最近调用公司SAP的同步人员信息 发现一些很小的点 但是很浪费时间的注意事项 第一 不要去相信对方开发者嘴中所谓的JSON 很有可能是各种非标准JSON 这是非标准JSON 至于标准的 键带有双引号的 re
  • 关于域控DC不能正常同步GC的解决办法(域控时间超过墓碑时间) 与域控SRV记录

    现象 用户两台域控 GC PDC 上面创建用户DC不能正常同步 DC上面创建用户GC能够同步 同时发现有一台文件服务器有些机器不能正常访问 提示共享无权限 原因 用dcdiag命令在GC上没有问题 在DC上发现墓碑时间问题 可以确定是墓碑时
  • UnityHub打不开自己的项目的一个可能

    自己的unity项目前几天还一切正常 突然就打不开了 从unity跳转不到hub 从hub点项目转了几圈就没反应了 也没办法新建项目 看了网上很多解决方法 重新登录 没反应 删了unityhub重新下载 没反应 关闭防火墙重新插usb接口这
  • 关于Typora初次下载输入代码时代码行号不显示的问题

    关于Typora初次下载输入代码时代码行号不显示的问题 我刚用Typora的时候 打开代码块发现居然不显示行号 以下是我打开代码块内行号的显示的步骤 我刚用Typora的时候 打开代码块发现居然不显示行号 以下是我打开代码块内行号的显示的步
  • dataframe按照某一列的取值进行拆分

    dataframe按照某一列 假设列名为 columnname 的取值进行拆分 即 比如dataframe的第一列只有 a b 两种取值可能 就把dataframe拆分成两个小的dataframe 一个dataframe的第一列只取 a 另
  • 【WiFi】Hostapd工作流程分析

    目录 1 Hostapd概述 2 Hostapd代码框架 3 Hostapd各种命令配置工具 4 hostaod的主函数 5 hostaod代码分析 1 Hostapd概述 Hostapd是一个运行在用户态的守护进程 可以通过Hostapd
  • JavaScript 入门基础 - 流程控制(四)

    JavaScript 流程控制 分支和循环 文章目录 JavaScript 流程控制 分支和循环 1 什么是流程控制 2 顺序流程控制 3 分支流程控制 之 if语句 3 1 什么是分支结构 3 2 if 语句 3 2 1 if 语句基本理
  • IPV6组播地址

    1 IPV6组播地址 RFC4291定义组播地址格式如下 8 4 4 112 11111111 flgs scop group ID
  • nas文件服务器web接口,nas配置web服务器

    nas配置web服务器 内容精选 换一换 通过Web浏览器登录资源 会话页面载入失败 提示由于服务器长时间无响应 连接已断开 请检查您的网络并重试 Code T 514 云堡垒机系统与资源服务器之间网络连接不稳定 导致连接断开 云堡垒机系统
  • 计蒜客 蒜头君的新游戏(DP)

    蒜头君的新游戏 include
  • 构造函数设置为private,会怎样。

    构造函数设置为private 会怎样 1 无法静态的创建对象了 即不能通过 A a这种方式创建对象了 只能通过在类的内部的静态成员函数中new一个对象 动态的创建对象 include
  • NotScripts扩展在Chrome中禁用网页JavaScript

    经常上网查找资料的朋友 应该对于那些无法复制网页内容的网站是深有感触的 由于这些网站作者为保护自己的网站内容不被他人抄袭 使用了JavaScrip来禁用鼠标右键复制功能 解决办法当然就是用浏览器禁止使用网页的JS加载或者生效了 如果你经常使
  • Hive窗口函数大全

    Hive窗口函数 一 偏移量函数 lag lead 二 窗口分析函数 first value last value 三 排序函数 rank dense rank row number 一 偏移量函数 lag 语法 lag col n def
  • linux网络编程实现投票功能

    投票系统 1 说明 写了一个投票系统 过程是先配置好服务器 在写一个网上投票功能 要实现网上投票功能 其实功能实现还是很简单的 麻烦一点的在于过程比较繁杂 要做的东西还是挺多的 2 过程 第一步 配置httpd服务器 先配置好httpd服务