标签:
这是另一个类型的服务器/客户端,无连接的 UDP: (User Datagram Protocol) 用户数据报协议
参考: P58~P60
UDP 时间戳服务器
【时间戳 就是ctime()显示的内容】
1 # coding: utf-8 2 3 from socket import * 4 from time import ctime 5 6 # HOST: 主机, 变量为空表示可以使用任何可用的地址 7 # PORT: 端口, 有效端口号范围是0~65535(1024以下的预留给了系统) 8 # BUFSIZ: 缓冲区, 大小可选, 这里设置为1024B, 即 1KB 9 HOST = "" 10 PORT = 21567 11 BUFSIZ = 1024 12 13 ADDR = (HOST, PORT) 14 udpSerSock = socket(AF_INET, SOCK_DGRAM) 15 udpSerSock.bind(ADDR) 16 17 # 由于UDP类型套接字的是不用连接的, 所以没有监听(ss.listen()) 18 # 和让客户端转接到一个新的、独立的套接字的"转化"过程(ss.accept()) 19 20 while True: 21 print "Waiting for message..." 22 data, addr = udpSerSock.recvfrom(BUFSIZ) 23 udpSerSock.sendto("[%s] %s" % (ctime(), data), addr) 24 print "...received from and returned to:", addr 25 26 udpSerSock.close()
UDP 客户端
1 # coding: utf-8 2 3 from socket import * 4 5 # HOST:主机名, PORT:端口, 要和服务器的一样, 不然无法建立联系 6 # PORT:端口, 同样可取0~65535(1024以下的预留给了系统) 7 8 HOST = "localhost" 9 PORT = 21567以下的 10 BUFSIZ = 1024 11 ADDR = (HOST, PORT) 12 13 udpCliSock = socket(AF_INET, SOCK_DGRAM) 14 # 由于UDP套接字:(User Datagram Protocol)是不需要建立连接的, 所以 15 # 也就没有(cs.connet())的过程 16 17 while True: 18 data = raw_input("> ") 19 if not data: 20 break 21 # 记得发送地址呀,不然服务器去哪找你呀,亲 22 udpCliSock.sendto(data, ADDR) 23 data, ADDR = udpCliSock.recvfrom(BUFSIZ) 24 print data 25 26 udpCliSock.close()
标签:
原文地址:http://www.cnblogs.com/Ruby517/p/5812998.html