Advertisement
Guest User

2.1

a guest
Oct 9th, 2020
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.40 KB | None | 0 0
  1. import argparse, socket
  2. from datetime import datetime
  3.  
  4. MAX_BYTES = 65535
  5.  
  6. def server(port):
  7.     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  8.     sock.bind(('127.0.0.1', port))
  9.     print('Listening at {}'.format(sock.getsockname()))
  10.     while True:
  11.         data, address = sock.recvfrom(MAX_BYTES)
  12.         text = data.decode('ascii')
  13.         print('The client at {} says {!r}'.format(address, text))
  14.         text = 'Your data was {} bytes long'.format(len(data))
  15.         data = text.encode('ascii')
  16.         socket.sendto(data, address)
  17.  
  18. def client(port):
  19.     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  20.     text = 'The time is {}'.format(datetime.now())
  21.     data = text.encode('ascii')
  22.     sock.sendto(data, ('127.0.0.1', port))
  23.     print('The OS assigned me the address {}'.format(sock.getsockname()))
  24.     data, address = sock.recvfrom(MAX_BYTES) # Danger!
  25.     text = data.decode('ascii')
  26.     print('The server {} replied {!r}'.format(address, text))
  27. if __name__ == '__main__':
  28.     choices = {'client': client, 'server': server}
  29.     parser = argparse.ArgumentParser(description='Send and receive UDP locally')
  30.     parser.add_argument('role', choices=choices, help='which role to play')
  31.     parser.add_argument('-p', metavar='PORT', type=int, default=1060, help='UDP port (default 1060)')
  32.  
  33.     args = parser.parse_args()
  34.     function = choices[args.role]
  35.     function(args.p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement