Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions hw_Lesson_03/client/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from argparse import ArgumentParser
import socket
import datetime
import jim
import settings


def get_presence_msg():
time = datetime.datetime.now()
msg = {
"action": "presence",
"time": time.isoformat(),
"type": "status",
"user": {
"account_name": "anonim",
"status": "Yep, I am here!"
}
}

return jim.pack(msg)


host = getattr(settings, 'HOST', '127.0.0.1')
port = getattr(settings, 'PORT', 7777)

parser = ArgumentParser()
parser.add_argument('-a', '--addr', type=str, help='Sets ip address')
parser.add_argument('-p', '--port', type=int, help='Sets port')

args = parser.parse_args()

if args.ip:
host = args.ip
if args.port:
port = args.port

try:
sock = socket.socket()
sock.connect((host, port))
print(f'Client started with {host}:{port}')
while True:
msg = get_presence_msg()
sock.sendall(msg)
response = sock.recv(settings.BUFFERSIZE)
response = jim.unpack(response)
print('Got next response from server:', response)

except KeyboardInterrupt:
print('Client closed')



Binary file added hw_Lesson_03/client/__pycache__/jim.cpython-36.pyc
Binary file not shown.
Binary file not shown.
21 changes: 21 additions & 0 deletions hw_Lesson_03/client/jim.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import json


def pack(dict_msg):
"""
Создание сообщения, пригодного для отправки через TCP
:param dict_msg: dict
:return: str
"""
str_msg = json.dumps(dict_msg)
return str_msg.encode('utf-8')


def unpack(bt_str):
"""
Распаквка полученного сообщения
:param bt_str: str
:return: dict
"""
str_decoded = bt_str.decode('utf-8')
return json.loads(str_decoded)
3 changes: 3 additions & 0 deletions hw_Lesson_03/client/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
HOST = "127.0.0.1"
PORT = 7777
BUFFERSIZE = 1024
44 changes: 44 additions & 0 deletions hw_Lesson_03/server/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from argparse import ArgumentParser
import socket
import datetime
import jim
import settings


def get_response_msg():
msg = {
"response": 200,
"alert": "Необязательное сообщение/уведомление"
}
return jim.pack(msg)


host = getattr(settings, 'HOST', '127.0.0.1')
port = getattr(settings, 'PORT', 7777)

parser = ArgumentParser()
parser.add_argument('-a', '--addr', type=str, help='Sets ip address')
parser.add_argument('-p', '--port', type=int, help='Sets port')

args = parser.parse_args()

if args.ip:
host = args.ip
if args.port:
port = args.port

try:
sock = socket.socket()
sock.bind((host, port))
sock.listen(5)
print(f'Server started with {host}:{port}')
while True:
client, address = sock.accept()
print(f'Client detected { address }')
request = client.recv(settings.BUFFERSIZE)
request = jim.unpack(request)
print('Got next request from client:', request)
msg = get_response_msg()
client.sendall(msg)
except KeyboardInterrupt:
print('Server closed')
Binary file added hw_Lesson_03/server/__pycache__/jim.cpython-36.pyc
Binary file not shown.
Binary file not shown.
21 changes: 21 additions & 0 deletions hw_Lesson_03/server/jim.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import json


def pack(dict_msg):
"""
Создание сообщения, пригодного для отправки через TCP
:param dict_msg: dict
:return: str
"""
str_msg = json.dumps(dict_msg)
return str_msg.encode('utf-8')


def unpack(bt_str):
"""
Распаквка полученного сообщения
:param bt_str: str
:return: dict
"""
str_decoded = bt_str.decode('utf-8')
return json.loads(str_decoded)
3 changes: 3 additions & 0 deletions hw_Lesson_03/server/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
HOST = "127.0.0.1"
PORT = 7777
BUFFERSIZE = 1024