关于冰盾 | 使用条款 | 网站地图
 
UDP客户端编码解析
UDP客户端编码解析
作者:冰盾防火墙 网站:www.bingdun.com 日期:2015-02-06
 

在前面,我们对UDP协议的相关内容也有了一定了解了。那么接下来我们则重点将诶少一下UDP客户端的创建过程。首先让我们看一下在Unix系统中,如何进行创建。那么请大家浏览文章看一下编写的源码。

创建一个UDP客户端

这一节中介绍的4段程序中,下面的这段UDP客户端代码是最短的。伪代码如下:

  1. cs = socket()                # 创建客户端套接字  
  2. comm_loop:                   # 通讯循环  
  3. cs.sendto()/cs.recvfrom()    # 对话(发送/接收)  
  4. cs.close()                   # 关闭客户端套接字 

在套接字对象创建好之后,我们就进入一个与服务器的对话循环。在通信结束后,套接字就被关闭了。tsUclnt.py真实的代码在例16.4中给出。

逐行解释

1~3行

还是跟TCP版本的客户端一样,在Unix的启动信息行后,我们导入了socket模块的所有属性。

5~10行

因为我们的服务器也是运行在本机,我们的客户端还是使用本机和相同的端口号。自然地,缓冲区的大小也还是1K。创建套接字的方法跟UDP服务器中的一样。

12~22行

UDP客户端的循环基本上与TCP客户端的完全一样。唯一的区别就是,我们不用先去跟UDP服务器建立连接,而是直接把消息发送出去,然后等待服务器的回复。得到加了时间戳的字符串后,把它显示到屏幕上,然后再继续其他的消息。在输入结束后,退出循环,关闭套接字。
例16.4  UDP时间戳客户端(tsUclnt.py)

创建一个UDP客户端,程序会提示用户输入要传给服务器的信息,显示服务器返回的加了时间戳的结果。

#!/usr/bin/env python
from socket import *
HOST=' localhost '
PORT=21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = raw_input('> ')
if not data:
break
udpCliSock.sendto(data, ADDR)
data, ADDR = udpCliSock.recvfrom(BUFSIZ)
if not data:
break
print dataudpClisock.close()
udpCliSock.close()

 

 
最新内容:
网络管理之TCP/UDP篇[2015-02-06]
UDP协议——数据报分发[2015-02-06]
UDP套接字的作用和特点[2015-02-06]
OSI传输层功能及协议[2015-02-06]
NetBIOS协议的会话、数据报以及范围[2015-02-06]
深入浅出TCP之send和recv[2015-02-06]
相关内容:

合作伙伴: 黑基网 补天科技 威盾科技 站长下载 新飞金信 北京电信 ZOL应用下载
中华人民共和国增值电信业务经营许可证京ICP备14024464 公安备案号 京1081234 
版权所有©2003-2016 冰盾防火墙  www.BingDun.com 法律声明
服务热线:(010)51661195