Я пытаюсь создать простой UDP-сервер и клиент, который будет просто обмениваться строковыми подтверждениями их соединения. Тем не менее, моя клиентская программа не выполняет передачу данных, хотя кажется, что она подключена.
Вот код для моего сервера, я вполне уверен, что этот код в порядке, так как я смог заставить кого-то еще подключить их клиент UDP, и выполнение было в порядке.
#!/usr/bin/env python
################ UDP SERVER ################################
import socket
import threading
import sys
ip = sys.argv[1] # this is local host
port = int(sys.argv[2]) # we'll start here.
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM)
done = False
while not done:
try: # servers must bind an ip address and a port to work
sock.bind((ip, port))
done = True
print("Listening on Port: " + str(port))
except:
print("Cannot connect to Port: " + str(port))
port += 1
def handel( a_socket):
request = a_socket.recv(1024)
print(str(request))
a_socket.send("Thank you sir!") # the acknowledgement
a_socket.close() # close the socket so it is NOT locked up.
while True:
message,addr = sock.recvfrom(2500) # OK someone pinged me.
print( "received from "+str(addr)+': '+str(message) )
sock.sendto("Thank you!",addr)
sock.close()
sys.exit()
break
И вот моя глючная клиентская программа UDP
#!/usr/bin/env python
##################### UDP CLIENT #############################
import socket
import ssl
import sys
if len(sys.argv) < 3:
print "USAGE program IP port "
sys.exit()
try:
ip = sys.argv[1]
port = int(sys.argv[2])
except:
print "USAGE program IP port "
sys.exit()
def listen(ip, port):
sox = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
sox.connect((ip, port))
print("UDP server listening on Port: " +str(port))
data, addr = sox.recvfrom(1024)
print("Received: ", data, addr)
sox.sendto("Thank you!", addr)
sox.close()
except:
print("UDP server not listening on Port: " + str(port))
sys.exit()
listen(ip, port)
, написанная в Python 2.7, принимает два ввода в командной строке для IP-адреса и номера порта. Дайте мне знать, что вы думаете, спасибо за ваше время!