客户端
import socket client_01 = socket.socket() client_01.connect(('10.1.30.100',9002)) """ 一开始定义客户端去连接服务器的时候需要发送的 客户端点击连接按钮发送: 1,用户名C1=02 2,提取数据,将收到的信息分离,分别存起来,比如位数,num,利用分片,split分成列表,然后固定a[1]为位数,a[2]为num,a[0]是用户名,a[3]是自己的数据 a[4]是服务端数据,ok 3,编写程序,判断n输入是否==a[2],如果是就显示信息提示,退出循环,结束网络连接 服务器接受到了消息: 1,将用户名C1存起来 Sc1=C1 send=str(Sc1+"|"+位数+"|"+num+"|"+C1(传过来的数据)) 2,input !=num,提示结果, send=send+input """ def cone(Dan): global flag dana=Dan info = input('请输入》》》').encode("utf-8") if int(info)==dana: print("you win!!") client_01.send(b'lose') client_01.close() # break if int(info)<dana: print("you get small!!") print("waiting optinal input!!!") client_01.send(info) if int(info)>dana: print("you get bigger!!") print("waiting optinal input!!!") client_01.send(info) msg = client_01.recv(1024).decode('utf-8') if msg == "over": # print("you lose!!") print("对方猜的是"+str(dana)) print("你输了") print("--------------------") flag=0 client_01.close() # socket.close() # print(msg) a=msg.split("|") # print(a[3]) print("对方猜的是:"+str(a[3])) if int(a[3])<dana: print("对方猜小了") if int(a[3])>dana: print("对方猜大了") if __name__ == '__main__': print("选择:") print("1,连接服务器") print("2,退出游戏") x=input("请选择:") if x=="1": myname = x.encode("utf-8") client_01.send(myname)#第一次发送 msg = client_01.recv(1024).decode('utf-8')#第一次接收信息 a=msg.split("|") print("这是一个"+str(a[0])+"位数") print(a) print(int(a[1])) dana=int(a[1]) flag = 1 while flag!=0: cone(dana) elif x=="2": print("退出成功!") client_01.close()
服务端
import socket import random def numcollect(): global io,num,num2,onum num = random.choice(range(0,99999)) io = 0 onum = num num2 = num # 计算位数 while onum >= 1: onum = onum / 10 io += 1 return io def theone(): weishu=numcollect() print("这是一个:"+str(weishu)+"位数") print("这是答案:"+str(num)) server = socket.socket() server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) server.bind(('10.1.30.100',9002)) server.listen(5) #while语句作用:(当客户端关闭后)接受新客户端的连接,实现服务端不间断地提供服务。 # while True: conn,addr = server.accept() # msg1 = conn.recv(1024).decode("utf-8") # print(msg1) #while语句作用:接受来自客户端的消息、打印,回复消息;当客户端的消息中包含‘bye’时,断开本次连接。 while True: msg = conn.recv(1024).decode('utf-8') # print.type(msg) msgri=msg mesg=str(msg) # if isinstance(msg,str): # print("this is str type!") # # continue if num == msg: #当收到的信息包含bye,给客户端发送bye,跳出当前while循环 conn.send(b'binggo!you are right!') break if msg == "1": fone=str(str(weishu)+"|"+str(num)) print("用户连接成功!") print("等待对方输入!") conn.send(str(fone).encode("utf-8")) elif msg == "2": print("用户下线!") conn.close() break elif msg !="1" and msg != "2": print("这是一个"+str(num)+"位数") info1 = str(str(weishu)+"|"+str(num)+"|"+mesg) # if print(info1) a2=info1.split("|") print(a2) print(a2[1]) # 对方的 if int(a2[2])==num: print("你输了") break if int(a2[2])<num: print("对方猜的是"+str(a2[2])) print("对方猜的小了") if int(a2[2])>num: print("对方猜的是"+str(a2[2])) print("对方猜的大了") if int(msgri)==num: print("对方猜的是"+str(a2[2])) print("你输了!") info = input('该你输入了>>>') info = int(info) # print(info) if info == num: print("well!你赢了!!!") conn.send("over".encode('utf-8')) conn.close() socket.close() break if info > num: print("oh!你猜大了!") print("等待对方输入!") # conn.send(str(info).encode('utf-8')) if info < num: print("oh!你猜小了!") print("等待对方输入!") # conn.send(str(info).encode('utf-8')) # print(info) info=str(info) info = str(str(info1)+"|"+str(info)) # print(info) conn.send(info.encode('utf-8')) if __name__ == '__main__': theone()
注意
还有许多地方不合理的,读者发现后可自行测试