|
@@ -0,0 +1,53 @@
|
|
|
+import socket
|
|
|
+import sys
|
|
|
+
|
|
|
+# save request code, make var for tcp socket port
|
|
|
+requestcode = sys.argv[1]
|
|
|
+rport = 0
|
|
|
+
|
|
|
+# start udp socket, declare tcp socket var
|
|
|
+sock = socket(AF_INET, SOCK_DGRAM)
|
|
|
+tsock = None
|
|
|
+
|
|
|
+# get udp socket port from system, save in a var
|
|
|
+sock.bind('', 0)
|
|
|
+nport = sock.getsockname()[1]
|
|
|
+
|
|
|
+# make flag to see if we are waiting for a confirmation or a new connection
|
|
|
+newConn = true
|
|
|
+
|
|
|
+# listen for msgs
|
|
|
+while True:
|
|
|
+ message, clientAddress = serverSocket.recvfrom(1024)
|
|
|
+ message = message.decode()
|
|
|
+
|
|
|
+ # match, create tcp socket
|
|
|
+ if (message == requestcode && newConn):
|
|
|
+ tsock = (socket.AF_INET, socket.SOCK_STREAM)
|
|
|
+ tsock.bind('', 0)
|
|
|
+ rport = tsock.getsockname()[1]
|
|
|
+ print("SERVER_TCP_PORT=", rport, sep="")
|
|
|
+ sock.sendto(rport.encode(), clientAddress) # send new socket port to client
|
|
|
+ newConn = false
|
|
|
+
|
|
|
+ # now put logic for TCP socket behaviour
|
|
|
+ while True:
|
|
|
+ tempsock, addr = serverSocket.accept()
|
|
|
+ msg = tempsock.recv(1024).decode()
|
|
|
+ print("SERVER_RCV_MSG='", msg, "'", sep="")
|
|
|
+ reply = msg[::-1]
|
|
|
+ tempsock.send(reply.encode())
|
|
|
+ tempsock.close()
|
|
|
+
|
|
|
+ # match, send a confirmation msg
|
|
|
+ else if (newConn == false && message == rport):
|
|
|
+ sock.sendto("correct".encode(), clientAddress)
|
|
|
+
|
|
|
+ # client is trying to verify the code, but sucks at life
|
|
|
+ else if (newConn == false):
|
|
|
+ # do nothing
|
|
|
+
|
|
|
+ # client f*ed up, reset all the things
|
|
|
+ else:
|
|
|
+ newConn = true
|
|
|
+ tsock.close()
|