UDP Server Sockets
Verfasst: Donnerstag 5. Oktober 2006, 18:25
Hallo zusammen.
Ich setze mich gerade mit UDP Server Sockets auseinander und bin ein wenig verblüfft, dass ihre Benutzung scheinbar doch recht anders ist, als die von TCP Sockets.
Wenn ich den folgenden Codes ausführe...
bekomme ich folgenden Fehler:
Ich würde aber gerne so etwas wie accept verwenden, damit ich (wie im oberen, nicht funktionierenden Beispiel) einen Socketdeskriptor bekomme, den ich an eine andere Funktion bzw. an ein Objekt weiter geben kann. Geht das gar nicht oder geht das irgendwie anderst?
Danke euch!
Ich setze mich gerade mit UDP Server Sockets auseinander und bin ein wenig verblüfft, dass ihre Benutzung scheinbar doch recht anders ist, als die von TCP Sockets.
Wenn ich den folgenden Codes ausführe...
Code: Alles auswählen
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:
(connSock, addr) = UDPSock.accept()
(data, addr) = connSock.rcv(buf)
if not data:
print "Client has exited!"
break
else:
print "\nReceived message '", data,"'"
# Close socket
UDPSock.close()
Scheinbar "mag" der UDP Socket das accept nicht. Googeln brachte mich zu folgendem Beispielcode, der ohne accept auskommt.Traceback (most recent call last):
File "/home/DrScheme/workspace/test/src/main.py", line 14, in ?
(connSock, addr) = UDPSock.accept()
File "/usr/lib/python2.4/socket.py", line 169, in accept
sock, addr = self._sock.accept()
socket.error: (95, 'Operation not supported')
Code: Alles auswählen
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()
Danke euch!