# your code goes hereimport socket
import threading
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 5550))
sock.send(b'1')
print(sock.recv(1024).decode())
#nickName = input('input your nickname: ')
#sock.send(nickName.encode())
def sendThreadFunc():
#while True:
try:
myword = input()
sock.send(myword.encode())
#print(sock.recv(1024).decode())
except ConnectionAbortedError:
print('Server closed this connection!')
except ConnectionResetError:
print('Server is closed!')
def recvThreadFunc():
#while True:
try:
otherword = sock.recv(1024)
if otherword == 'quit':
sock.close()
elif otherword:
print(otherword.decode())
else:
pass
except ConnectionAbortedError:
print('Server closed this connection!')
except ConnectionResetError:
print('Server is closed!')
th1 = threading.Thread(target=sendThreadFunc)
th2 = threading.Thread(target=recvThreadFunc)
threads = [th1, th2]
for t in threads :
t.setDaemon(True)
t.start()
t.join()
IyB5b3VyIGNvZGUgZ29lcyBoZXJlaW1wb3J0IHNvY2tldAppbXBvcnQgdGhyZWFkaW5nCiAKc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKIApzb2NrLmNvbm5lY3QoKCdsb2NhbGhvc3QnLCA1NTUwKSkKc29jay5zZW5kKGInMScpCnByaW50KHNvY2sucmVjdigxMDI0KS5kZWNvZGUoKSkKI25pY2tOYW1lID0gaW5wdXQoJ2lucHV0IHlvdXIgbmlja25hbWU6ICcpCiNzb2NrLnNlbmQobmlja05hbWUuZW5jb2RlKCkpCgpkZWYgc2VuZFRocmVhZEZ1bmMoKToKICAgICN3aGlsZSBUcnVlOgogICAgdHJ5OgogICAgICAgIG15d29yZCA9IGlucHV0KCkKICAgICAgICBzb2NrLnNlbmQobXl3b3JkLmVuY29kZSgpKQogICAgICAgICAgICAjcHJpbnQoc29jay5yZWN2KDEwMjQpLmRlY29kZSgpKQogICAgZXhjZXB0IENvbm5lY3Rpb25BYm9ydGVkRXJyb3I6CiAgICAgICAgcHJpbnQoJ1NlcnZlciBjbG9zZWQgdGhpcyBjb25uZWN0aW9uIScpCiAgICBleGNlcHQgQ29ubmVjdGlvblJlc2V0RXJyb3I6CiAgICAgICAgcHJpbnQoJ1NlcnZlciBpcyBjbG9zZWQhJykKICAgIApkZWYgcmVjdlRocmVhZEZ1bmMoKToKICAgICN3aGlsZSBUcnVlOgogICAgdHJ5OgogICAgICAgIG90aGVyd29yZCA9IHNvY2sucmVjdigxMDI0KQogICAgICAgIGlmIG90aGVyd29yZCA9PSAncXVpdCc6CiAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgIGVsaWYgb3RoZXJ3b3JkOgogICAgICAgICAgICBwcmludChvdGhlcndvcmQuZGVjb2RlKCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFzcwogICAgZXhjZXB0IENvbm5lY3Rpb25BYm9ydGVkRXJyb3I6CiAgICAgICAgcHJpbnQoJ1NlcnZlciBjbG9zZWQgdGhpcyBjb25uZWN0aW9uIScpCgogICAgZXhjZXB0IENvbm5lY3Rpb25SZXNldEVycm9yOgogICAgICAgIHByaW50KCdTZXJ2ZXIgaXMgY2xvc2VkIScpCiAKIAp0aDEgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZW5kVGhyZWFkRnVuYykKdGgyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVjdlRocmVhZEZ1bmMpCnRocmVhZHMgPSBbdGgxLCB0aDJdCiAKZm9yIHQgaW4gdGhyZWFkcyA6CiAgICB0LnNldERhZW1vbihUcnVlKQogICAgdC5zdGFydCgpCnQuam9pbigp