1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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()
|