154 lines
4.2 KiB
Python
154 lines
4.2 KiB
Python
|
# THIS FILE IS A PART OF VCStudio
|
||
|
# PYTHON 3
|
||
|
|
||
|
###############################################################################
|
||
|
|
||
|
# With the Multiuser system. It became clear early on that simply using the UDP
|
||
|
# protocol would not be cool. Because it's just not checking enough things.
|
||
|
# In my point of view. I want to send to the end network all the data directly
|
||
|
# and not care too much about what format it is in and stuff.
|
||
|
|
||
|
# So this file will insure that the data will be transferred what ever it is
|
||
|
# just as is. The hard part will be here.
|
||
|
|
||
|
###############################################################################
|
||
|
|
||
|
import json
|
||
|
|
||
|
def send(c, message):
|
||
|
|
||
|
# This function will do the sending of the message. I will treat every
|
||
|
# message as if it's a file. And will write everything into a json format
|
||
|
# for transferring. Unless it's already in binarry. In which case I will
|
||
|
# keep it that way.
|
||
|
|
||
|
# The mode will be either B ( bytes ) or J ( json ). All the rest will
|
||
|
# handalled by the json madule hopefully.
|
||
|
|
||
|
T = b"B"
|
||
|
if type(message) != bytes:
|
||
|
T = b"J"
|
||
|
message = bytes(json.dumps(message), 'utf-8')
|
||
|
|
||
|
# So now it's bytes anyway and it means we can send it over the network.
|
||
|
# This will be done in 3 stages. TYPE ( T ), AMOUNT ( len(message) )
|
||
|
# and the message it self. Always.
|
||
|
|
||
|
# Now we we going to wait for a send message from the other side.
|
||
|
m = c.recv(4)
|
||
|
m = m.decode('utf8')
|
||
|
while m != "SEND":
|
||
|
print("DE-SYNCED! '"+m+"' NOT 'SEND'")
|
||
|
c.sendall(b"N")
|
||
|
m = c.recv(4)
|
||
|
m = m.decode('utf8')
|
||
|
|
||
|
|
||
|
c.sendall(T)
|
||
|
c.recv(2)
|
||
|
c.sendall(bytes(str(len(message)), 'utf-8'))
|
||
|
c.recv(2)
|
||
|
c.sendall(message)
|
||
|
c.recv(2)
|
||
|
|
||
|
def recv(c):
|
||
|
|
||
|
# This function will do the recieving of the message.
|
||
|
|
||
|
# I guess in order to fix most of the problems with this recv function
|
||
|
# which is a little unsynsing here and there. I will make a fail switch
|
||
|
# so it wil alight it self properly even it network if hidby, bibdy or
|
||
|
# any of my server or client code is terribly unrelible.
|
||
|
|
||
|
c.sendall(b"SEND")
|
||
|
|
||
|
# It might fail or it might work
|
||
|
|
||
|
T = c.recv(1)
|
||
|
T = T.decode('utf8')
|
||
|
tr = 0
|
||
|
while T not in ["B", "J"]:
|
||
|
print("DE-SYNCED! '"+T+"' NOT 'J' OR 'B'")
|
||
|
c.sendall(b"SEND")
|
||
|
T = c.recv(1)
|
||
|
T = T.decode('utf8')
|
||
|
tr = tr + 1
|
||
|
if tr == 8:
|
||
|
exit()
|
||
|
|
||
|
c.sendall(b"OK")
|
||
|
|
||
|
# So here we just recieved the T , Type of our message
|
||
|
|
||
|
SIZE = c.recv(1024)
|
||
|
SIZE = int(SIZE.decode('utf8'))
|
||
|
|
||
|
# Now we recieved our amount. Next is to recieve the message
|
||
|
c.sendall(b"OK")
|
||
|
|
||
|
message = b""
|
||
|
cs = 0
|
||
|
|
||
|
while SIZE > cs:
|
||
|
l = c.recv(SIZE)
|
||
|
cs = cs + len(l)
|
||
|
message = message + l
|
||
|
|
||
|
c.sendall(b"OK")
|
||
|
|
||
|
message[SIZE:]
|
||
|
|
||
|
# Now let's ge the data back from JSON id it's a JSON.
|
||
|
if T == "J":
|
||
|
message = json.loads(message.decode('utf8'))
|
||
|
|
||
|
return message
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
# P for Pain
|
||
|
|
||
|
# Can't afford to feel the joy
|
||
|
# Can't find strength to feel the pain
|
||
|
# I'll shrink and go and feel no more
|
||
|
# Is it fine to be lame?
|
||
|
|
||
|
# I don't want death. Since death
|
||
|
# Has an opposite effect
|
||
|
# From suffering from being lame
|
||
|
# Death is opposite of pain
|
||
|
|
||
|
# An importance of the pain
|
||
|
# Is that joy is just a drug
|
||
|
# Such as suffering and pain
|
||
|
# It's a head confusing bug
|
||
|
|
||
|
# Joyful, satisfying shit
|
||
|
# make you feel comfortable
|
||
|
# But discomfort and the pain
|
||
|
# It's what is affordable
|
||
|
|
||
|
# Lameness feel pathetic shit
|
||
|
# Me described using four words
|
||
|
# No more joy, only regrets
|
||
|
# Five more words of discomfort
|
||
|
|
||
|
# Shrink from big and fall from tall
|
||
|
# Give up everything you have
|
||
|
# Go homeless, starve, and suffer. Feel.
|
||
|
# The pain inducing hollow and venomous discomfort,
|
||
|
# swallowing all and every thought and only
|
||
|
# pain. Pain. And nothing more exists.
|
||
|
# And nothing more is fair.
|
||
|
|
||
|
# Can't afford to feel the joy
|
||
|
# But find strength to feel the pain
|
||
|
# I'll shrink and go and feel no more
|
||
|
# It is fine to be lame.
|
||
|
|
||
|
# https://open.lbry.com/@blenderdumbass:f/P-for-Pain:f?r=GRS5mK5GDEGa77vRotG4LwMqPCyhpF2k
|