from socket import *
import time
import os, sys
import getpass
def do_register(s):
while True:
name = input('请输入名称')
passwd = getpass.getpass('请输入密码')
passwd1 = getpass.getpass('Again')
if (' ' in name) or (' ' in passwd):
print('用户名或密码不允许由空格')
continue
if passwd != passwd1:
print('两次密码不一致请重新输入')
continue
name_post = 'Z {} {}'.format(name, passwd)
print(name_post)
s.send(name_post.encode())
data = s.recv(1024).decode()
print(data)
if data == 'OK':
return 0
elif data == 'EXISTS':
return 1
else:
return 2
def do_up(s):
while True:
name = input('请输入用户名')
passwd = getpass.getpass('请输入密码')
name_post = 'D {} {}'.format(name, passwd)
s.send(name_post.encode())
data = s.recv(1024).decode()
if data == 'OK':
return name
else:
return 2
def do_find(s, name):
print('find被调用')
a1 = input('请输入您要查询的英文内容')
word1 = 'F {} {}'.format(a1, name)
s.send(word1.encode())
data = s.recv(1024).decode()
if not data:
print('未查询到相关字词')
print('{}的中文意思是{}'.format(a1, data))
def do_second(s, name):
print('-----------------------------------')
print('---------欢迎进入电子词典1.0--------')
print('---------1 查询-----————————————---')
print('---------3 退出--------------------')
while True:
try:
cmd = int(input('请输入操作选项'))
except:
print('输入错误请重新输入')
continue
if cmd == 1:
do_find(s, name)
if cmd == 3:
sys.exit('服务端退出')
break
def main():
if len(sys.argv) < 3:
print('链接出错')
HOST = sys.argv[1]
POST = int(sys.argv[2])
ADDR = (HOST, POST)
s = socket()
try:
s.connect(ADDR)
except:
print('链接服务器失败')
while True:
print('*********************')
print('-----电子词典1.0------')
print('---------1 登录------')
print('---------2 注册------')
print('---------3 退出------')
try:
cmd = int(input('请输入你要进行的操作'))
except:
print('输入错误请重新输入')
continue
if cmd not in [1, 2, 3]:
print('请输入正确选项')
sys.stdin.flush() # 清除标准输入
continue
if cmd == 1:
r = do_up(s)
if r == 2:
print('登录失败')
else:
print('登录成功')
name = r
do_second(s, name)
if cmd == 2:
r = do_register(s)
if r == 0:
print('注册成功')
elif r == 1:
print('用户已存在')
else:
print('注册失败')
if cmd == 3:
s.send(b'Quit')
sys.exit('欢迎再次使用')
break
if __name__ == '__main__':
main()