2017-03-11 1 views
-1

Da ist etwas macht mich wirklich verwirrt.UDP-Listener empfängt Pakete von zwei verschiedenen Quellports?

Ich habe eine Hausaufgabe zu tun, Herr will einfach eine sender_udp.py und listener_udp.py.

Aber er begehrt etwas, das ich wirklich nicht verstehen kann.

Er sagt:

Blockquote

udp_receiver.py auf dem lokalen Loopback (127.0.0.1) Port # 5444 und drucken Sie die Nachricht hören sollte, dass es auf dem Port empfängt. Es sollte die Absenderadresse und die Absenderportnummer (wenn möglich) ausgedruckt werden. Die udp_sender.py sollte 5567.

Blockquote

von Hafen zu dem lokalen Loopback (127.0.0.1) Ihren Vornamen aus Portnummer 5566 und Ihren Nachnamen senden schrieb ich den Sender und Empfänger, aber Empfänger empfängt keine Pakete überhaupt.

hier ist der Empfängercode:

import socket 
import sys 

# Create a UDP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

# Bind the socket to the port 
server_address = ('localhost', 5444) 
print(sys.stderr, 'starting up on %s port %s' % server_address) 
sock.bind(server_address) 


while True: 
    print(sys.stderr, '\nwaiting to receive message') 
    data, address = sock.recvfrom(4096) 

    print(sys.stderr, 'received %s bytes from %s' % (len(data), address)) 
    print(sys.stderr, data) 

und Sendercode

import socket 
import sys 

# Create a UDP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
messageName = 'aaaaa' 
messageSurname = 'bbbb' 

try: 

    # Send data 
    print(sys.stderr, 'sending "%s"' % messageName) 
    sent = sock.sendto(messageName.encode('utf-8'),('localhost', 5566)) 

    print(sys.stderr, 'sending "%s"' % messageSurname) 
    sent = sock.sendto(messageSurname.encode('utf-8'),('localhost', 5567)) 



finally: 
    print(sys.stderr, 'closing socket') 
    sock.close() 

Eigentlich habe ich mit diesem Code kennen, ist es nicht möglich ist, Pakete zu 5444 zu senden, sendet Client-Paket an anderer Hafen; und an diesen Ports gibt es keinen Listener. Ich kann nicht verstehen, was er mit diesem Problem meint. Vielleicht hat er uns gebeten, jedem Paket verschiedene Quellports zuzuweisen? Dann, gibt es eine Möglichkeit, es mit Python zu tun, konnte ich keine Lösung finden?

Jede Hilfe wäre sehr willkommen.

Antwort

0

Sie Code sollte wie folgt suchen:

Empfänger:

import socket 
import sys 

# Create a UDP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

# Bind the socket to the port 
server_address = ('localhost', 5444) 
sock.bind(server_address) 
print('starting up on %s port %s' % server_address) 

while True: 
    print('\nwaiting to receive message') 

    data, address = sock.recvfrom(4096) 
    print('received %s bytes from %s' % (len(data), address)) 
    print(data)`enter code here` 

Sender:

import socket 
import sys 

# Create a UDP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
messageName = 'aaaaa' 
messageSurname = 'bbbb' 

try: 
    # Send data 
    print('sending "%s"' % messageName) 
    sock.sendto(messageName.encode('utf-8'),('localhost', 5444)) 

    print('sending "%s"' % messageSurname) 
    sock.sendto(messageSurname.encode('utf-8'),('localhost', 5444)) 
finally: 
    print('closing socket') 
    sock.close() 

Achten Sie beim Senden von Paketen an Empfänger IP-Adresse und Port zu senden. Wenn also der Empfänger Port 5444 überwacht, senden Sie ihn an diesen Port.

Verwandte Themen