首页 > 其他 > 详细

【卷二】网络三—UDP服务器与客户端

时间:2016-08-27 15:35:38      阅读:224      评论:0      收藏:0      [点我收藏+]

这是另一个类型的服务器/客户端,无连接的 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()
Server

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()
Client-side

 

【卷二】网络三—UDP服务器与客户端

原文:http://www.cnblogs.com/Ruby517/p/5812998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!