Advertisement
Leonard_M

Client-guessing

Oct 23rd, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. import socket
  2. import struct
  3. import random
  4. import time
  5.  
  6. HOST = "192.168.43.238"
  7. PORT = 19999
  8.  
  9. def readInt(sock):
  10.     data = sock.recv(4)
  11.     data = struct.unpack("!i", data)[0]
  12.     return data
  13.  
  14. def sendInt(sock, toSend):
  15.     sock.send(struct.pack("!i", toSend))
  16.  
  17. def sendChar(sock, toSend):
  18.     sock.send(struct.pack("!c", toSend.encode('ascii')))
  19.  
  20. def readChar(sock):
  21.     data = sock.recv(1)
  22.     data = struct.unpack("!c", data)[0].decode('ascii')
  23.     return data
  24.  
  25. def sendIntArray(sock, toSend):
  26.     sendInt(sock, len(toSend))
  27.     for value in toSend:
  28.         sendInt(sock, value)
  29.  
  30. def sendCharArray(sock, toSend):
  31.     sendInt(sock, len(toSend))
  32.     for value in toSend:
  33.         sendChar(sock, value)
  34.  
  35. def readIntArray(sock):
  36.     buff = []
  37.     length = readInt(sock)
  38.     for i in range(length):
  39.         buff.append(readInt(sock))
  40.     return buff
  41.  
  42. def readCharArray(sock):
  43.     buff = ""
  44.     length = readInt(sock)
  45.     for i in range(length):
  46.         buff+=readChar(sock)
  47.     return buff
  48.  
  49.  
  50. with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
  51.     sock.connect((HOST, PORT))
  52.  
  53.     mins = 0
  54.     tops = 1000
  55.  
  56.     while True:
  57.         guess = random.randint(mins, tops)
  58.         time.sleep(0.1)
  59.         print(guess)
  60.         sendInt(sock, guess)
  61.         answer = readCharArray(sock)
  62.         if answer == "Lower":
  63.             tops = guess
  64.         elif answer == "Higher":
  65.             mins = guess
  66.         else:
  67.             print(answer)
  68.             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement