采用python socket 实现的简易登录模块
1.客户端
import socket
sk=socket.socket()
address=("49.140.79.30",2008)
conn=sk.connect(address)
while True:
i=input("注册请输入1,登陆请输入0\n")
print(i)
if i=="1":
while True:
sk.sendall(bytes(1))
name=input("请输入用户名\n")
password=input("请输入密码\n")
password2=input("请再次输入密码\n")
if password!=password2:
print("两次密码不一致")
continue
sk.sendall(bytes(name.encode("utf-8")))
sk.sendall(bytes(password.encode("utf-8")))
if sk.recv(1024)==bytes(200):
print("恭喜你注册成功\n")
sk.close()
break
if i=="0":
sk=socket.socket()
address=("49.140.79.30",2008)
conn=sk.connect(address)
while True:
sk.sendall(bytes(2))
name2=input("请输入用户名\n")
password3=input("请输入密码\n")
sk.sendall(bytes(name2.encode("utf-8")))
if sk.recv(1024)!=bytes(password3.encode("utf-8")):
print("用户名或者密码错误!请重新输入\n")
continue
if sk.recv(1024)==bytes(200):
print("恭喜你成功登陆!这里是黄片拿去吧么么哒!\n")
break
print("登陆结束")
else:
print("caonima")
服务器端
dic_id_password={}
import socket
sk=socket.socket()
address=("49.140.79.30",2008)
sk.bind(address)
sk.listen(12)
print(dic_id_password)
while True:
conn,addr=sk.accept()
a=conn.recv(1024)
if a==bytes(1):
name=str(conn.recv(1024),encoding='UTF-8')
password=str(conn.recv(1024),encoding='UTF-8')
dic_id_password[name]=password
conn.sendall(bytes(200))
if a==bytes(2):
name2=str(conn.recv(1024),encoding='UTF-8')
password2=dic_id_password[name2]
conn.sendall(bytes(password2.encode("utf-8")))
conn.sendall(bytes(200))
print(dic_id_password)
总结:原来sk.sendall()方法只能传输bytes信息啊~我在动手操作之前,都一直以为它传的是str信息。甚至以为字典也能直接传,真是太天真了。
这只是我软件里的一个小模块,以后整合进去。