Gå til innhold

[python] asynchat remote ip fra udp socket


Anbefalte innlegg

Hei!

 

Når jeg skal sende en melding med asynchat og en TCP-socket er det veldig enkelt å hente remote ip ved hjelp av self.accept() som i seg selv er obligatorisk i en TCP-tilkobling... Men hvordan gjør jeg dette hvis jeg bruker en UDP-socket? :S

Lenke til kommentar
  • 2 måneder senere...
Videoannonse
Annonse

UDP fungerer jo på en annen måte (datagram), så jeg regner med du får et adresse-objekt fra funksjonen som henter UDP-pakken fra socket?

 

# Client program

from socket import *

# Set the socket parameters
host = "localhost"
port = 21567
buf = 1024
addr = (host,port)

# Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)

def_msg = "===Enter message to send to server===";
print "\n",def_msg

# Send messages
while (1):
data = raw_input('>> ')
if not data:
	break
else:
	if(UDPSock.sendto(data,addr)):
		print "Sending message '",data,"'....."

# Close socket
UDPSock.close()

 

# Server program

from socket import *

# Set the socket parameters
host = "localhost"
port = 21567
buf = 1024
addr = (host,port)

# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)

# Receive messages
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
	print "Client has exited!"
	break
else:
	print "\nReceived message '", data,"'"

# Close socket
UDPSock.close()

 

Tatt herfra.

Lenke til kommentar

UDP sockets bruker ikke tilkobling som tcp sockets.

UDP socket kan motta datagrams fra all servere på nettverket og sende datagrams til alle hoster på nettverket.

Derfor vil self.accept() og self.connect() virke for UDP.

Det er mulig det er andre måter og løse det ønsker,eller tenke på om du trenger dette når du bruker UDP.

Endret av SNIPPSAT
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...