Advertisement
Leonard_M

client-udp-guessing-game.py

Nov 4th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. import logging
  2. import socket
  3. import struct
  4. import random
  5. import time
  6. import sys
  7.  
  8. def readInt(sock):
  9.     data, addr = sock.recvfrom(4)
  10.     data = struct.unpack("!i", data)[0]
  11.     return data, addr
  12.  
  13. def sendInt(sock, toSend, whereTo):
  14.     sock.sendto(struct.pack("!i", toSend),
  15.         whereTo)
  16.  
  17. def sendChar(sock, toSend, whereTo):
  18.     sock.sendto(struct.pack("!c", toSend.encode('ascii')),
  19.         whereTo)
  20.  
  21. def readChar(sock):
  22.     data, addr = sock.recvfrom(1)
  23.     data = struct.unpack("!c", data)[0].decode('ascii')
  24.     return data, addr
  25.  
  26. def sendIntArray(sock, toSend, whereTo):
  27.     sendInt(sock, len(toSend), whereTo)
  28.     for value in toSend:
  29.         sendInt(sock, value, whereTo)
  30.  
  31. def sendCharArray(sock, toSend, whereTo):
  32.     sendInt(sock, len(toSend), whereTo)
  33.     for value in toSend:
  34.         sendChar(sock, value, whereTo)
  35.  
  36. def readIntArray(sock):
  37.     buff = []
  38.     length, addr = readInt(sock)
  39.     for i in range(length):
  40.         buff.append(readInt(sock)[0])
  41.     return buff, addr
  42.  
  43. def readCharArray(sock):
  44.     buff = ""
  45.     length, addr = readInt(sock)
  46.     for i in range(length):
  47.         buff+=readChar(sock)[0]
  48.     return buff, addr
  49.  
  50.  
  51.  
  52.  
  53. toWhere = ("localhost", 19999)
  54.  
  55. with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
  56.     sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  57.    
  58.     min = 0
  59.     top  = 1000
  60.     guess = random.randint(min, top)
  61.     response = ""
  62.     while True:
  63.         time.sleep(0.3)
  64.         sendInt(sock, guess, toWhere)
  65.         response, addr = readCharArray(sock)
  66.         if response == "smaller":
  67.             top = guess
  68.         elif response == "bigger":
  69.             min = guess
  70.         else:
  71.             print(response)
  72.             break
  73.         guess = random.randint(min, top)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement