Files
Python-2019/Socket/chat client.py
T
2019-09-02 17:56:04 +02:00

58 lines
1.6 KiB
Python

import socket
import select
import errno
import sys
HEADER_LENGTH=10
IP="172.16.0.27."
#IP="86.242.99.166"
IP='192.168.1.11'
IP='localhost'
IP=socket.gethostname()
IP='localhost'
print(IP)
PORT=1236
my_username=input("username: ")
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client_socket.connect((IP,PORT))
client_socket.setblocking(False)
username=my_username.encode('utf-8')
username_header=f"{len(username):<{HEADER_LENGTH}}".encode('utf-8')
client_socket.send(username_header+username)
while True:
message=input(f"{my_username}>")
if message:
message=message.encode('utf-8')
message_header=f"{len(message):<{HEADER_LENGTH}}".encode('utf-8')
client_socket.send(message_header+message)
try:
while True:
#receive things
username_header=client_socket.recv(HEADER_LENGTH)
if not len(username_header):
print("connection closed by the server")
sys.exit()
username_length=int(username_header.decode('utf-8').strip())
username=client_scoket.recv(username_length).decode('utf-8')
message_header=client_socket.recv(HEADER_LENGTH)
message_length=int(message_header.decode('utf-8').strip())
message=client.socket.recv(message_length).decode('utf-8')
print(f"{username}>{message}")
except IOError as e:
if e.errno != errno.EAGAIN and e.errno != errno.EWOULDBLOCK:
print("reading error",str(e))
sys.exit()
continue
except Exception as e:
print("general error",str(e))
sys.exit()