基于UDP协议的密码验证

利用Python实现socket编程
1、客户端程序需完成功能:
1)从名为’pswd.txt’的文件中读取密码。
2)把密码发送到服务器程序。
3)显示服务器程序的返回结果
2、服务器程序需完成功能:
1)接受来自客户端程序发送的密码。
2)显示客户端的socket信息(IP地址,端口号)
3)验证密码是否正确(正确的密码为“123456”)
3)密码正确发送”correct”,否则返回”false”

客户端程序:

# udpclient.py
from socket import *
file = ‘E:\pswd.txt‘
#读取密码文件并保存至passwd变量
with open(file,‘r‘) as f:
    passwd = f.read()
f.close()

host = ‘127.0.0.1‘  #客户端IP
port = 13141        #客户端端口
bufsize = 1024      #定义缓冲大小
addr = (host,port)
udpClient = socket(AF_INET,SOCK_DGRAM) #创建客户端

passwd = passwd.encode(encoding="utf-8") #用utf-8的格式编码
udpClient.sendto(passwd,addr)  #发送数据
response,addr = udpClient.recvfrom(bufsize) #接受数据和返回地址
response = response.decode(encoding=‘utf-8‘) #用utf-8的格式解码
print(response,‘from‘,addr) #显示服务器的返回结果

udpClient.close() #关闭客户端

服务器端程序

# udpserver.py
from socket import *

host = ‘‘  #监听所有的IP
port = 13141
bufsize = 1024
addr = (host,port)

udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #开始监听
while True:
    print(‘Waiting for connection...‘)
    passwd,addr = udpServer.recvfrom(bufsize) #接受数据和返回地址
    passwd=passwd.decode(encoding=‘utf-8‘)
#判断密码是否正确:
    if passwd == ‘123456‘:
        response=‘correct‘
    else:
        response=‘false‘
    udpServer.sendto(response.encode(encoding=‘utf-8‘) ,addr)
    print(‘...recevied from and return to :‘,addr)
udpServer.close()

结果:
服务器监听

客户端接收返回信息并显示

服务器端显示客户端信息

原文地址:http://blog.51cto.com/gdutcxh/2113717

时间: 2024-11-09 03:16:29

基于UDP协议的密码验证的相关文章

Android基础入门教程——7.6.4 基于UDP协议的Socket通信

Android基础入门教程--7.6.4 基于UDP协议的Socket通信 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来Socket的最后一节:基于UDP协议的Socket通信,在第一节中我们已经详细地 比较了两者的区别,TCP和UDP最大的区别在于是否需要客户端与服务端建立连接后才能进行 数据传输,如果你学了前两节TCP的,传输前先开服务端,accept,等客户端接入,然后获得 客户端socket然后进行IO操作,而UDP则不用,UDP以数据报作为数据的传输载体,

Python中的端口协议之基于UDP协议的通信传输

UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) ------------------------------------------------------------------------------------------------------------------------------------- 一.UDP协议:OSI七层协议中的传输协议的一种(另外一种tcp协议),他们都是一种端口协议 与TCP协

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

JAVA基础知识之网络编程——-基于UDP协议的通信例子

UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, 1 package udp; 2 3 import java.io.IOException; 4 import java.net.Dat

基于 UDP 协议的网络编程

类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序 UDP 数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证 UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达 DatagramPacket 对象封装了 UDP 数据报(<64k),在数据报中包含了发送端的 IP 地址和端口号以及接收端的 IP 地址和端口号 UDP 协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接 举例: publ

基于UDP协议的网络编程

UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象. Java使用DatagramSocket代表基于UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和发送数据报.Java使用DatagramPacket来代表数据报,DatagramSocket接收和发送数据都是通过DatagramPacket对象完成的. Datagr

tsunami:一种基于UDP协议的快速传输

一. 需求 最近在做数据库迁移,经常需要打包实例传输,传统scp感觉很慢. 二. 软件信息 1. 软件主页:http://tsunami-udp.sf.net/ 2. 软件安装:直接源码make && make install 三. 简单使用 以下介绍简明步骤: 在源机子开启tsunami进程:tsunamid * 在目标机子 connect ip  &&  get 四. 测试 在几台待迁移服务器上(机子比较老)传输时发现在70Mb/s左右 五. 使用经验 如果做tar包,

Java网络编程 - 基于UDP协议 实现简单的聊天室程序

最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. 先看一下效果: 实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理. "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着. 看一下代码实现: 1.首先是消息服务器的实现,功能很简单: 将客户端的信息(进入了哪一个聊

基于UDP协议模拟的一个TCP协议传输系统

TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术. 我写的这个系统基于UDP协议模拟了一个TCP协议,所实现的功能如下: 1.三次握手 2.一个计时器,用来判断传输超时行为 3.快速重传 4.能处理不同的MSS(maximum segment size) 5.没有被接收方确认收到的包会被存在发送方,最大可以存MWS个(Maximum Window size) 6.能处理包丢失的情况 7.接收方一旦收到包,立刻发送确认信息给发送方 8.接收方的超时时间是固定的 9.接收方