Advertisement
Leonard_M

server-udp-guessing-game.py

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