UDP客户端编码解析

网络 网络管理
本文我们介绍了UDP协议的UDP客户端创建的源码。首先让我们了解诶一下,在开头的代码是如何编写的。那么之后还会对它们进行解析。

在前面,我们对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()

 

责任编辑:佟健 来源: IBM
相关推荐

2018-07-17 09:59:10

PythonUDP服务器

2010-02-25 16:20:02

WCF客户端

2009-12-22 10:29:59

WCF客户端处理

2009-12-02 14:37:17

2015-06-03 09:27:05

JavaScript客户端检测技术

2010-09-29 15:05:44

DHCP客户端故障

2011-08-17 10:10:59

2021-09-22 15:46:29

虚拟桌面瘦客户端胖客户端

2010-05-31 10:11:32

瘦客户端

2011-10-26 13:17:05

2011-03-02 14:36:24

Filezilla客户端

2010-12-21 11:03:15

获取客户端证书

2011-03-24 13:00:31

配置nagios客户端

2009-03-04 10:27:50

客户端组件桌面虚拟化Xendesktop

2011-03-21 14:53:36

Nagios监控Linux

2011-04-06 14:24:20

Nagios监控Linux

2013-05-09 09:33:59

2010-02-22 09:03:22

零客户端瘦客户端VDI终端

2012-10-11 17:02:02

IBMdw

2012-11-28 11:05:42

IBMdW
点赞
收藏

51CTO技术栈公众号