
Socket Programming using UDP Socket.
The user datagram protocol (UDP) works differently from TCP/IP. Where TCP is a stream oriented protocol, ensuring that all of the data is transmitted in the right order, UDP is a message oriented protocol. UDP does not require a long-lived connection, so setting up a UDP socket is a little simpler. On the other hand, UDP messages must fit within a single packet (for IPv4, that means they can only hold 65,507 bytes because the 65,535 byte packet also includes header information) and delivery is not guaranteed as it is with TCP.
Server
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (‘localhost’, 10000)
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
if data:
sent = sock.sendto(data, address)
print >>sys.stderr, ‘sent %s bytes back to %s’ % (sent, address)
Client
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (‘localhost’, 10000)
message = ‘This is the message. It will be repeated.’
try:
print >>sys.stderr, ‘sending “%s”‘ % message
sent = sock.sendto(message, server_address)
print >>sys.stderr, ‘waiting to receive’
data, server = sock.recvfrom(4096)
print >>sys.stderr, ‘received “%s”‘ % data
finally:
print >>sys.stderr, ‘closing socket’
sock.close()
Comments
Post a Comment