Removed some unnecessary schtuff
This commit is contained in:
parent
7fa9c9b585
commit
9312ae4b10
4 changed files with 0 additions and 287 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
287
packets.py~
287
packets.py~
|
@ -1,287 +0,0 @@
|
||||||
import socket
|
|
||||||
|
|
||||||
class PacketUtility:
|
|
||||||
"""The base class of QuickStreamServer and QuickStreamClient."""
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def getMyIP():
|
|
||||||
return socket.gethostbyname(socket.getfqdn())
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_int(socket, int_length = 2):
|
|
||||||
"""Get a tuple of ints from THE OTHER SIDE!"""
|
|
||||||
size = b""
|
|
||||||
message = b""
|
|
||||||
msg_len = int(0)
|
|
||||||
bytes_recd = int(0)
|
|
||||||
ret = []
|
|
||||||
|
|
||||||
while bytes_recd < int_length:
|
|
||||||
size += socket.recv(int_length - bytes_recd)
|
|
||||||
if size == b"":
|
|
||||||
raise RuntimeError("socket connection broken")
|
|
||||||
bytes_recd = len(size)
|
|
||||||
msg_len = int.from_bytes(size, byteorder = "big")
|
|
||||||
bytes_recd = int(0)
|
|
||||||
|
|
||||||
while bytes_recd < msg_len:
|
|
||||||
message += socket.recv(min(msg_len - bytes_recd, 1024))
|
|
||||||
if bytes_recd == len(message): # if the message wasn't added to
|
|
||||||
raise RuntimeError("socket connection broken")
|
|
||||||
bytes_recd = len(message)
|
|
||||||
socket.send(bytes_recd.to_bytes(int_length, byteorder = "big"))
|
|
||||||
|
|
||||||
for i in range(0, int(msg_len), int_length):
|
|
||||||
ret.append(int.from_bytes(message[i:i+int_length], byteorder = "big"))
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_str(socket):
|
|
||||||
"""get a string from THE OTHER SIDE!"""
|
|
||||||
size = b""
|
|
||||||
message = b""
|
|
||||||
msg_len = int(0)
|
|
||||||
bytes_recd = int(0)
|
|
||||||
#ret = []
|
|
||||||
|
|
||||||
while bytes_recd < 2:
|
|
||||||
size += socket.recv(2 - bytes_recd)
|
|
||||||
if size == b"":
|
|
||||||
raise RuntimeError("socket connection broken")
|
|
||||||
bytes_recd = len(size)
|
|
||||||
msg_len = int.from_bytes(size, byteorder = "big")
|
|
||||||
bytes_recd = int(0)
|
|
||||||
|
|
||||||
while bytes_recd < msg_len:
|
|
||||||
message += socket.recv(min(msg_len - bytes_recd, 1024))
|
|
||||||
if bytes_recd == len(message):
|
|
||||||
raise RuntimeError("socket connection broken")
|
|
||||||
bytes_recd = len(message)
|
|
||||||
socket.send(bytes_recd.to_bytes(2, byteorder = "big"))
|
|
||||||
ret = str(message, "utf-8")
|
|
||||||
return ret
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def send_int(socket, stuff, int_length = 2): #tuple stuff
|
|
||||||
"""Send a tuple of ints to THE OTHER SIDE!"""
|
|
||||||
message = b""
|
|
||||||
|
|
||||||
for thing in stuff:
|
|
||||||
message += int(thing).to_bytes(int_length, byteorder = "big")
|
|
||||||
msg_len = len(message)
|
|
||||||
message = msg_len.to_bytes(int_length, byteorder = "big") + message
|
|
||||||
total_sent = 0
|
|
||||||
|
|
||||||
while total_sent < msg_len + int_length:
|
|
||||||
total_sent += socket.send(message[total_sent:])
|
|
||||||
confirm = socket.recv(int_length)
|
|
||||||
|
|
||||||
if int.from_bytes(confirm, byteorder = "big") == msg_len:
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
raise RuntimeError("incomplete packet sent")
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def send_str(socket, stuff):
|
|
||||||
"""Send a string to THE OTHER SIDE!"""
|
|
||||||
msg_len = len(stuff)
|
|
||||||
message = msg_len.to_bytes(2, byteorder = "big") + bytes(stuff, "utf-8")
|
|
||||||
total_sent = 0
|
|
||||||
|
|
||||||
while total_sent < msg_len + 2:
|
|
||||||
total_sent += socket.send(message[total_sent:])
|
|
||||||
confirm = socket.recv(2)
|
|
||||||
|
|
||||||
if int.from_bytes(confirm, byteorder = "big") == msg_len:
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
raise RuntimeError("incomplete packet sent")
|
|
||||||
|
|
||||||
class QuickStreamServer(PacketUtility):
|
|
||||||
"""Get a server set up easily! Note: This kind of server is NOT always ideal."""
|
|
||||||
|
|
||||||
def __init__(self, port, expectedClients = 1, ipAddress = ''):
|
|
||||||
"""Creates a quick server using the specified port and number of expected clients."""
|
|
||||||
self.clients = [] # Start with an empty list of clients
|
|
||||||
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
if len(ipAddress) >= 7:
|
|
||||||
address = (ipAddress, port)
|
|
||||||
else
|
|
||||||
address = (socket.gethostname(), port)
|
|
||||||
serverSocket.bind(address)
|
|
||||||
serverSocket.listen(expectedClients)
|
|
||||||
for i in range(expectedClients):
|
|
||||||
self.clients.append(serverSocket.accept())
|
|
||||||
serverSocket.close()
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
self.clients[i][0].close()
|
|
||||||
|
|
||||||
def getByte(self):
|
|
||||||
"""Get a tuple of byte-size ints from each client."""
|
|
||||||
ret = []
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
ret.append(QuickStreamServer.get_int(self.clients[i][0], 1)
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
def getShort(self):
|
|
||||||
"""Get a tuple of short ints from each client."""
|
|
||||||
ret = []
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
ret.append(QuickStreamServer.get_int(self.clients[i][0], 2)
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
def getInt(self):
|
|
||||||
"""Get a tuple of ints from each client."""
|
|
||||||
ret = []
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
ret.append(QuickStreamServer.get_int(self.clients[i][0], 4)
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
def getLong(self):
|
|
||||||
"""Get a tuple of long ints from each client."""
|
|
||||||
ret = []
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
ret.append(QuickStreamServer.get_int(self.clients[i][0], 8)
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
def getString(self):
|
|
||||||
"""Get a string from each client."""
|
|
||||||
ret = []
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
ret.append(QuickStreamServer.get_str(self.clients[i][0]))
|
|
||||||
return tuple(ret)
|
|
||||||
|
|
||||||
def sendByte(self, message):
|
|
||||||
"""Send a tuple of byte-size ints to each client."""
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
QuickStreamServer.send_int(self.clients[i][0], message, 1)
|
|
||||||
|
|
||||||
def sendShort(self, message):
|
|
||||||
"""Send a tuple of short ints to each client."""
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
QuickStreamServer.send_int(self.clients[i][0], message, 2)
|
|
||||||
|
|
||||||
def sendByte(self, message):
|
|
||||||
"""Send a tuple of ints to each client."""
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
QuickStreamServer.send_int(self.clients[i][0], message, 4)
|
|
||||||
|
|
||||||
def sendShort(self, message):
|
|
||||||
"""Send a tuple of long ints to each client."""
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
QuickStreamServer.send_int(self.clients[i][0], message, 8)
|
|
||||||
|
|
||||||
def sendString(self, message):
|
|
||||||
"""Send a string to each client."""
|
|
||||||
for i in range(len(self.clients)):
|
|
||||||
QuickStreamServer.send_str(self.clients[i][0], message)
|
|
||||||
|
|
||||||
class QuickStreamClient(PacketUtility):
|
|
||||||
"""Get a client set up easily! Note: This kind of client is NOT always ideal."""
|
|
||||||
|
|
||||||
def __init__(self, ipAddress, port):
|
|
||||||
"""Creates a quick client using the specified IP address and port."""
|
|
||||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
server.connect((ipAddress, port))
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
server.close()
|
|
||||||
|
|
||||||
def getByte(self):
|
|
||||||
"""Get a tuple of byte-size ints from the server."""
|
|
||||||
return QuickStreamClient.get_int(self.server, 1)
|
|
||||||
|
|
||||||
def getShort(self):
|
|
||||||
"""Get a tuple of short ints from the server."""
|
|
||||||
return QuickStreamClient.get_int(self.server, 2)
|
|
||||||
|
|
||||||
def getInt(self):
|
|
||||||
"""Get a tuple of ints from the server."""
|
|
||||||
return QuickStreamClient.get_int(self.server, 4)
|
|
||||||
|
|
||||||
def getLong(self):
|
|
||||||
"""Get a tuple of long ints from the server."""
|
|
||||||
return QuickStreamClient.get_int(self.server, 8)
|
|
||||||
|
|
||||||
def getString(self):
|
|
||||||
"""Get a string from the server."""
|
|
||||||
return QuickStreamClient.get_str(self.server)
|
|
||||||
|
|
||||||
def sendByte(self, message):
|
|
||||||
"""Send a tuple of byte-size ints to the server."""
|
|
||||||
QuickStreamClient.send_int(self.server, message, 1)
|
|
||||||
|
|
||||||
def sendShort(self, message):
|
|
||||||
"""Send a tuple of short ints to the server."""
|
|
||||||
QuickStreamClient.send_int(self.server, message, 2)
|
|
||||||
|
|
||||||
def sendInt(self, message):
|
|
||||||
"""Send a tuple of ints to the server."""
|
|
||||||
QuickStreamClient.send_int(self.server, message, 4)
|
|
||||||
|
|
||||||
def sendLong(self, message):
|
|
||||||
"""Send a tuple of long ints to the server."""
|
|
||||||
QuickStreamClient.send_int(self.server, message, 8)
|
|
||||||
|
|
||||||
def sendString(self, message):
|
|
||||||
"""Send a string to the server."""
|
|
||||||
QuickStreamClient.sent_str(self.server, message)
|
|
||||||
|
|
||||||
# Legacy support:
|
|
||||||
get_int = PacketUtility.get_int
|
|
||||||
get_str = PacketUtility.get_str
|
|
||||||
send_int = PacketUtility.send_int
|
|
||||||
send_str = PacketUtility.send_str
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
print("""packets.py
|
|
||||||
Contents:
|
|
||||||
Class PacketUtility: The base class of QuickStreamServer and QuickStreamClient.
|
|
||||||
Methods:
|
|
||||||
getMyIP()
|
|
||||||
get_int(socket, int_length = 2)
|
|
||||||
get_str(socket)
|
|
||||||
send_int(socket, stuff, int_length = 2)
|
|
||||||
send_str(socket, stuff)
|
|
||||||
|
|
||||||
Class QuickStreamServer: Get a server set up easily! Note: This kind of server is NOT always ideal.
|
|
||||||
Methods:
|
|
||||||
QuickStreamServer(port, expectedClients = 1, ipAddress = '')
|
|
||||||
getByte()
|
|
||||||
getShort()
|
|
||||||
getInt()
|
|
||||||
getLong()
|
|
||||||
getString()
|
|
||||||
sendByte(message)
|
|
||||||
sendShort(message)
|
|
||||||
sendInt(message)
|
|
||||||
sendLong(message)
|
|
||||||
sendString(message)
|
|
||||||
Fields:
|
|
||||||
clients
|
|
||||||
|
|
||||||
Class QuickStreamClient: Get a client set up easily! Note: This kind of client is NOT always ideal.
|
|
||||||
Methods:
|
|
||||||
QuickStreamClient(ipAddress, port)
|
|
||||||
getByte()
|
|
||||||
getShort()
|
|
||||||
getInt()
|
|
||||||
getLong()
|
|
||||||
getString()
|
|
||||||
sendByte(message)
|
|
||||||
sendShort(message)
|
|
||||||
sendInt(message)
|
|
||||||
sendLong(message)
|
|
||||||
sendString(message)
|
|
||||||
Fields:
|
|
||||||
server
|
|
||||||
|
|
||||||
Legacy:
|
|
||||||
get_int(socket, int_length = 2)
|
|
||||||
get_str(socket)
|
|
||||||
send_int(socket, stuff, int_length = 2)
|
|
||||||
send_str(socket, stuff)
|
|
||||||
|
|
||||||
This module is meant to be imported along with 'socket'.""")
|
|
Loading…
Add table
Add a link
Reference in a new issue