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

相关内容

    暂无相关文章