Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. import os
  2. import struct
  3. import time
  4. from socket import *
  5. import sys
  6. from subprocess import call
  7.  
  8.  
  9. def clear():
  10. _ = call('clear' if os.name =='posix' else 'cls')
  11.  
  12. def mainMenu():
  13. clear()
  14. print("===================\n"
  15. " MAIN MENU\n"
  16. "\n Disconnected\n"
  17. "===================")
  18. print("1. Set PC as client\n"
  19. "2. Set PC as server\n"
  20. "3.Change IP address\n"
  21. "4.Change PORT\n")
  22. print("5. Exit")
  23. selection = int(input("Select: "))
  24. if selection==1:
  25. start_client()
  26. elif selection==2:
  27. start_server()
  28. elif selection==3:
  29. exit()
  30. else:
  31. print("Vyber cislo z menu!")
  32. mainMenu()
  33.  
  34. def start_client():
  35. content = None
  36. host = "127.0.0.1"
  37. port = 10050
  38. size_of_fragment = 1024
  39. UDPSock = socket(AF_INET, SOCK_DGRAM)
  40.  
  41. def client_menu1(host, port):
  42. addr = (host, port)
  43. if connect(addr):
  44. clear()
  45. print("====Connected!====")
  46. print("==================\n"
  47. "CLIENT MENU\n"
  48. f"IP: {host}\n"
  49. f"PORT: {port}\n"
  50. f"Fragment size: {size_of_fragment}\n"
  51. "==================\n")
  52. print("1.Change size of fragment")
  53. selection = int(input("Select: "))
  54. if selection == 1:
  55. host = client_set_ip()
  56. client_menu1(host, port)
  57. elif selection == 2:
  58. client_set_port()
  59. elif selection == 3:
  60. exit()
  61. else:
  62. print("Vyber cislo z menu!")
  63. client_menu1(host, port)
  64. else:
  65. mainMenu()
  66.  
  67. def client_set_ip():
  68. host = input("Zadaj IP adresu kam chces posielat v tvare xxx.xxx.xxx.xxx\n")
  69. return host
  70.  
  71. def client_size_of_fragment():
  72. size_of_fragment = input("Zadaj velkost fragmentu - max 1024, min - 13") #este treba upravit
  73. return size_of_fragment
  74.  
  75. # file_name = print("Zadaj nazov suboru aj s cestou\n")
  76. # with open('file_name', 'rb') as f:
  77. # content = f.read()
  78.  
  79. def header_connection_msg():
  80. type = 0 #0 connection, 1 - info, 2 - data_head
  81. size_fragments = 1500#user_edit
  82. num_fragments = 1 #sizeofMSG/sizeoffragments
  83. type_of_msg = 0 #0 - text, 1 - file
  84. #checksum = CRC
  85. header = struct.pack("cHHc", b'0', size_fragments, num_fragments, b'0')
  86. return header
  87.  
  88. def connect(addr):
  89. datap = header_connection_msg()
  90. success = 1
  91. time = 0
  92. while True:
  93. time = time + 1
  94. print(f"{time}Pripajam")
  95. UDPSock.sendto(datap, addr)
  96. UDPSock.settimeout(0.5)
  97. try:
  98. success, addr = UDPSock.recvfrom(1024)
  99. except error:
  100. success = None
  101. if success is not None:
  102. return True
  103. if time > 30:
  104. break
  105.  
  106.  
  107.  
  108. client_menu1(host, port)
  109.  
  110. while True:
  111. data = input("Zadaj spravu")
  112. UDPSock.sendto(data.encode(), addr)
  113. (datap, addr) = UDPSock.recvfrom(1024)
  114. print(datap.decode())
  115. if data == "exit":
  116. break
  117.  
  118. UDPSock.close()
  119. os._exit(0)
  120.  
  121. def start_server():
  122. host = "127.0.0.1"
  123. port = 10050
  124. buf = 1024
  125. address = (host, port)
  126. p = 0
  127. UDPSock = socket(AF_INET, SOCK_DGRAM)
  128. UDPSock.bind(address)
  129. while True:
  130. (header, address) = UDPSock.recvfrom(500)
  131. type, size_fragments, num_fragments, type_of_msg = struct.unpack("cHHc", header)
  132. if type == b'0':
  133. break
  134.  
  135. if type == b'0':
  136. p = b'0'
  137. print(f"lol")
  138. UDPSock.sendto(p, address)
  139.  
  140. print('Server caka')
  141.  
  142. while True:
  143. (data, address) = UDPSock.recvfrom(5)
  144. data1 = "Server prijal spravu"
  145. UDPSock.sendto(data1.encode(), address)
  146. print(f"Received message: {sys.getsizeof(data)}")
  147. print(f"Received message: {data}")
  148. if data == b"exit":
  149. break
  150.  
  151. UDPSock.close()
  152. os._exit(0)
  153.  
  154. mainMenu()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement